Registriert seit: 09.05.2015
Version(en): 2013, Office 365
(01.03.2017, 01:47)atilla schrieb: Hallo Erich,
das war blöd von mir. Ich hatte den Code mit anderen Zellbzügen entwickelt und habe ihn nachträglich falsch auf Dein eingestelltes Beispiel angepasst.
Folgender Code sollte funktionieren:
Code: Sub übertragen() Dim i As Long, k As Long Dim lngS As Long Dim lngZ As Long Dim lngA As Long Dim feld Dim arr()
lngS = Application.Max(25, Cells(27, Columns.Count).End(xlToLeft).Column) lngZ = Application.Max(27, Cells(Rows.Count, "U").End(xlUp).Row) lngA = Application.CountIf(Range(Cells(27, "U"), Cells(lngZ, "V")), "x") feld = Range(Cells(27, "U"), Cells(lngZ, "V"))
If lngA > 0 Then ReDim arr(lngA - 1) For i = 1 To lngZ - 28 If feld(i, 2) = "x" Then arr(k) = feld(i, 1) k = k + 1 End If Next i If k > 0 Then Cells(27, lngS + 1).Resize(k) = Application.Transpose(arr) End If End If End Sub
Hallo Attila, jetzt funktioniert es schon etwas besser....aber es werden nicht alle Spieler berücksichtigt...schau mal......und es sollte der übertragene Spieler auch in der selben Zeile aufgeführt werden und nicht direkt untereinander. Hast Du vielleicht noch ne Idee? Aufstellungsvarianten | U | V | W | X | Y | Z | AA | AB | AC | AD | 26 | | Auswahl | | | | R1 | R2 | R3 | R4 | R5 | 27 | Spieler 1 | x | | | | Spieler 1 | | | | | 28 | Spieler 2 | | | | | Spieler 3 | | | | | 29 | Spieler 3 | x | | | | Spieler 4 | | | | | 30 | Spieler 4 | x | | | | Spieler 6 | | | | | 31 | Spieler 5 | | | | | Spieler 7 | | | | | 32 | Spieler 6 | x | | | | | | | | | 33 | Spieler 7 | x | | | | | | | | | 34 | Spieler 8 | | | | | | | | | | 35 | Spieler 9 | x | | | | | | | | | 36 | Spieler 10 | x | | | | | | | | |
Excel-Inn.de | Hajo-Excel.de | XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 | Add-In-Version 21.08 einschl. 64 Bit |
Herzlichen Dank!
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Erich, wnn Du die Zellen in die kopiert wird so formatierst: ";;" ginge es einfach mit folgendem Code: Code: Sub übertragen() Dim i As Long Dim lngS As Long Dim lngZ As Long Dim lngA As Long Dim feld
lngS = Application.Max(25, Cells(27, Columns.Count).End(xlToLeft).Column) lngZ = Application.Max(27, Cells(Rows.Count, "U").End(xlUp).Row) lngA = Application.CountIf(Range(Cells(27, "U"), Cells(lngZ, "V")), "x") feld = Range(Cells(27, "U"), Cells(lngZ, "V"))
If lngA > 0 Then For i = 1 To lngZ - 26 If feld(i, 2) <> "x" Then feld(i, 1) = "" End If Next i Range(Cells(27, lngS), Cells(lngZ, lngS)) = feld End If
End Sub
In den leer ersichtlichen zellen würde dann eine nicht sichtbare 0 stehen. So sähe es aus: Arbeitsblatt mit dem Namen 'Tabelle1' | | U | V | W | X | Y | Z | 26 | | Auswahl | | | | R1 | 27 | Spieler 1 | x | | | | Spieler 1 | 28 | Spieler 2 | x | | | | Spieler 2 | 29 | Spieler 3 | | | | | | 30 | Spieler 4 | | | | | | 31 | Spieler 5 | | | | | | 32 | Spieler 6 | x | | | | Spieler 6 | 33 | Spieler 7 | | | | | | 34 | Spieler 8 | x | | | | Spieler 8 | 35 | Spieler 9 | | | | | | 36 | Spieler 10 | x | | | | Spieler 10 |
Zelle | Format | Wert | Z27 | ;; | Spieler 1 |
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg |
Sonst müsste der Code aufwendiger werden.
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
(01.03.2017, 11:44)atilla schrieb: Hallo Erich,
wnn Du die Zellen in die kopiert wird so formatierst:
";;"
ginge es einfach mit folgendem Code:
Code: Sub übertragen() Dim i As Long Dim lngS As Long Dim lngZ As Long Dim lngA As Long Dim feld
lngS = Application.Max(25, Cells(27, Columns.Count).End(xlToLeft).Column) lngZ = Application.Max(27, Cells(Rows.Count, "U").End(xlUp).Row) lngA = Application.CountIf(Range(Cells(27, "U"), Cells(lngZ, "V")), "x") feld = Range(Cells(27, "U"), Cells(lngZ, "V"))
If lngA > 0 Then For i = 1 To lngZ - 26 If feld(i, 2) <> "x" Then feld(i, 1) = "" End If Next i Range(Cells(27, lngS), Cells(lngZ, lngS)) = feld End If
End Sub
In den leer ersichtlichen zellen würde dann eine nicht sichtbare 0 stehen.
So sähe es aus:
Arbeitsblatt mit dem Namen 'Tabelle1' | | U | V | W | X | Y | Z | 26 | | Auswahl | | | | R1 | 27 | Spieler 1 | x | | | | Spieler 1 | 28 | Spieler 2 | x | | | | Spieler 2 | 29 | Spieler 3 | | | | | | 30 | Spieler 4 | | | | | | 31 | Spieler 5 | | | | | | 32 | Spieler 6 | x | | | | Spieler 6 | 33 | Spieler 7 | | | | | | 34 | Spieler 8 | x | | | | Spieler 8 | 35 | Spieler 9 | | | | | | 36 | Spieler 10 | x | | | | Spieler 10 |
Zelle | Format | Wert | Z27 | ;; | Spieler 1 |
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg |
Sonst müsste der Code aufwendiger werden. Hallo Attila, gut, aber jetzt werden die ausgewählten Spieler zwar in die richtige Zeile geschrieben aber in die falsche Anfangsspalte...in Spalte X und nicht in Spalte Z. Außerdem wird die Zielspalte immer überschrieben und nicht wir in Deiner vorhergehenden Version in die nächste Spalte z.B. AA geschrieben. Kuckst Du .... Aufstellungsvarianten | U | V | W | X | Y | Z | AA | AB | AC | AD | 26 | | Auswahl | | | | R1 | R2 | R3 | R4 | R5 | 27 | Spieler 1 | x | | | Spieler 1 | | | | | | 28 | Spieler 2 | | | | | | | | | | 29 | Spieler 3 | | | | | | | | | | 30 | Spieler 4 | x | | | Spieler 4 | | | | | | 31 | Spieler 5 | | | | | | | | | | 32 | Spieler 6 | x | | | Spieler 6 | | | | | | 33 | Spieler 7 | | | | | | | | | | 34 | Spieler 8 | x | | | Spieler 8 | | | | | | 35 | Spieler 9 | x | | | Spieler 9 | | | | | | 36 | Spieler 10 | x | | | Spieler 10 | | | | | |
Excel-Inn.de | Hajo-Excel.de | XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 | Add-In-Version 21.08 einschl. 64 Bit |
und nach Änderung der Auswahl.... Aufstellungsvarianten | U | V | W | X | Y | Z | AA | AB | AC | AD | 26 | | Auswahl | | | | R1 | R2 | R3 | R4 | R5 | 27 | Spieler 1 | | | | | | | | | | 28 | Spieler 2 | x | | | Spieler 2 | | | | | | 29 | Spieler 3 | | | | | | | | | | 30 | Spieler 4 | x | | | Spieler 4 | | | | | | 31 | Spieler 5 | | | | | | | | | | 32 | Spieler 6 | | | | | | | | | | 33 | Spieler 7 | | | | | | | | | | 34 | Spieler 8 | x | | | Spieler 8 | | | | | | 35 | Spieler 9 | | | | | | | | | | 36 | Spieler 10 | x | | | Spieler 10 | | | | | |
Excel-Inn.de | Hajo-Excel.de | XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 | Add-In-Version 21.08 einschl. 64 Bit |
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Erich,
schwere Geburt.
Änder diese Zeile so um:
Range(Cells(27, lngS + 1), Cells(lngZ, lngS + 1)) = feld
Das rot markierte ist hinzugekommen.
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
(01.03.2017, 12:05)atilla schrieb: Hallo Erich,
schwere Geburt.
Änder diese Zeile so um:
Range(Cells(27, lngS + 1), Cells(lngZ, lngS + 1)) = feld
Das rot markierte ist hinzugekommen. Hallo Attila, danke....Asche auf mein Haupt...da hätte ich selbst drauf kommen können. Aber das weiterschalten ab der Spalte Z ist damit noch nicht behoben.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Erich, müsste aber. Da ich nicht genau weiß, welchen Code Du verändert hast, hier noch einmal der gesamte Code: Code: Sub übertragen() Dim i As Long Dim lngS As Long Dim lngZ As Long Dim lngA As Long Dim feld
lngS = Application.Max(25, Cells(27, Columns.Count).End(xlToLeft).Column) lngZ = Application.Max(27, Cells(Rows.Count, "U").End(xlUp).Row) lngA = Application.CountIf(Range(Cells(27, "U"), Cells(lngZ, "V")), "x") feld = Range(Cells(27, "U"), Cells(lngZ, "V"))
If lngA > 0 Then For i = 1 To lngZ - 26 If feld(i, 2) <> "x" Then feld(i, 1) = 0 End If Next i Range(Cells(27, lngS + 1), Cells(lngZ, lngS + 1)) = feld End If
End Sub
Und unten die Beispieldatei:
Mappe1Sharky51.xlsm (Größe: 17,65 KB / Downloads: 3)
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
(01.03.2017, 13:22)atilla schrieb: Hallo Erich,
müsste aber.
Da ich nicht genau weiß, welchen Code Du verändert hast, hier noch einmal der gesamte Code:
Code: Sub übertragen() Dim i As Long Dim lngS As Long Dim lngZ As Long Dim lngA As Long Dim feld
lngS = Application.Max(25, Cells(27, Columns.Count).End(xlToLeft).Column) lngZ = Application.Max(27, Cells(Rows.Count, "U").End(xlUp).Row) lngA = Application.CountIf(Range(Cells(27, "U"), Cells(lngZ, "V")), "x") feld = Range(Cells(27, "U"), Cells(lngZ, "V"))
If lngA > 0 Then For i = 1 To lngZ - 26 If feld(i, 2) <> "x" Then feld(i, 1) = 0 End If Next i Range(Cells(27, lngS + 1), Cells(lngZ, lngS + 1)) = feld End If
End Sub
Und unten die Beispieldatei: Super Attila, jetzt funktioniert es perfekt....vielen herzlichen Dank!
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
IHR SEID SCHON WIRKLICH ALLE KLASSE!!!!!!!!!!!
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Erich, du brauchst nicht in jeder Antwort den Beitrag vom Vorredner komplett zitieren. Die wissen meistens noch was sie vorher geschrieben haben.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Attila, ich muss nochmals nachhaken. Deine Beispieldatei funktioniert bestens. Nur hätte ich gerne die ganzen Daten an einer anderen Stelle im Tabellenblatt. Leider schaffe ich es nicht das Ganze richtig anzupassen damit das an der Stelle (Zeilen/Spalten) auch funktioniert. Wärst Du so nett mir den Code auf das eingefügte Tabellenblatt anzupassen...der Lerneffekt für mich wäre auch gleich da?
Mappe1Sharky51_V1.xlsm (Größe: 39,5 KB / Downloads: 2)
|