Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel vba Richtiges umkopieren
#1
Hallo zusammen,

darf ich Euch wieder mal um Eure Hilfe bitten?
Ich habe folgende Tabelle in der ich in der Spalte V Spieler per "x" auswähle. Dann soll auf die "x" gefiltert werden und das Filterergebnis, also die sichtbaren "x" in die Spalte "Z" übertragen werden
Damit steht in der Spalte "Z" die erste Auswahl. Wird nun in Spalte "V" eine neue Auswahl getroffen soll nach der Filterung dieses Ergebnis wieder übertragen werden..aber in die nächste frei Spalte...hier nun in die Spalte "AA".

Wie kann man so ezwas per VBA umsetzen? Das umkopieren könnte gleich nach der Filterung automatisch umkopiert werden.


Aufstellungsvarianten
UVWXYZAAABACAD
26AuswahlR1R2R3R4R5
27Spieler 1x
28Spieler 2
29Spieler 3x
30Spieler 4
31Spieler 5
32Spieler 6x
33Spieler 7
34Spieler 8x
35Spieler 9
36Spieler 10x
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



Wäre schön wenn mir jemand einen Tipp geben könnte.
Vielen Dank!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#2
Hallo Erich,

ich habe die Anfrage noch nicht ganz verstanden. 

a) Wenn ich die Eingabe in Spalte V mache und nach Spalte Z übertrage wofür benötige ich dann einen Filter und warum mache ich die Eingaben nicht direkt in Spalte Z?

b) Wenn das Kopieren nicht in der gleichen Zeile erfolgen soll, sondern fortlaufend ab Zeile 2, wofür das Filtern und was mach ich dann mit einer Liste voller x?
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • sharky51
Antworten Top
#3
Hallo Erich,

ich habe hier etwas zusammengebastelt ohne den Filter zu nutzen:


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(26, 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, 3)), "x")
feld = Range(Cells(27, 2), Cells(lngZ, 3))

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
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • sharky51
Antworten Top
#4
(28.02.2017, 18:21)Ego schrieb: Hallo Erich,

ich habe die Anfrage noch nicht ganz verstanden. 

a) Wenn ich die Eingabe in Spalte V mache und nach Spalte Z übertrage wofür benötige ich dann einen Filter und warum mache ich die Eingaben nicht direkt in Spalte Z?

b) Wenn das Kopieren nicht in der gleichen Zeile erfolgen soll, sondern fortlaufend ab Zeile 2, wofür das Filtern und  was mach ich dann mit einer Liste voller x?

Hallo Helmut,
zu a) nun den Filter benötige ich nicht unbedingt, der Filter sollte nur der Auslöser für das Umkopieren sein. Und wenn einmal Einträgr in Spalte Z stehen sollen diese nicht mehr überschrieben werden sondern nach den erneuten und geänderten Einträgen in Spalte V die Spalte AA beschrieben werden.

zu b) die Liste voller x soll eine gewisse Historie darstellen welcher Spieler zu einem bestimmten Event (Spalte Z bis Spalte AD) ausgewählt war.

Der Filter war nur die Idee die Geschichte übersichtlicher zu gestalten.

Ich hoffe das ist jetzt nicht zu verwirrend beschrieben.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#5
(28.02.2017, 21:31)atilla schrieb: Hallo Erich,

ich habe hier etwas zusammengebastelt ohne den Filter zu nutzen:


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(26, 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, 3)), "x")
feld = Range(Cells(27, 2), Cells(lngZ, 3))

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,

leider kann ich nicht erkennen wie das funktionieren soll.

Trotzdem vielen Dank!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#6
Hallo Erich,

Du fügst den Code am besten in das Codefenster der Tabelle.
Danach kannst Du ihn dann mal anschubsen und schauen was er in einer Kopie Deiner Datei veranstaltet.
Gruß Atilla
Antworten Top
#7
(28.02.2017, 23:17)atilla schrieb: Hallo Erich,

Du fügst den Code am besten in das Codefenster der Tabelle.
Danach kannst Du ihn dann mal anschubsen und schauen was er in einer Kopie Deiner Datei veranstaltet.

Hallo Attila,

hab ich gemacht ...aber schon ab hier
If lngA > 0 Then...springt das Programm direkt raus aus der Sub. Es passiert nichts.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#8
Hallo Erich,

die Frage warum du die Auswahl nicht direkt in der "richtigen" Spalte (Z;AA;...) machst hast du noch nicht beantwortet.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#9
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
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • sharky51
Antworten Top
#10
(01.03.2017, 00:38)Ego schrieb: Hallo Erich,

die Frage warum du die Auswahl nicht direkt in der "richtigen" Spalte (Z;AA;...)  machst hast du noch nicht beantwortet.

Hallo Helmut,
weil ich die Auswahl eigentlich nur an einer Stelle machen möchte und diese dann übertragen möchte.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste