Zellen mit gleichen Anfangsbuchstaben verschieben in neue Tabelle!
#1
Hallo zusammen,

ich habe jetzt echt das gesamte Forum durchsucht und leider zu meinem Problem keine Lösung gefunden.

Ich würde gerne, aus einer Tabelle alle Zellen die, die gleichen 3 Anfangsbuchstaben haben, in eine neue Tabelle verschieben.
Optimal wäre noch, die gesamte Zeile der Zelle aus Tabelle1 dazu.

z.Bsp. 
Alle Werte die  mit HHR anfangen, sollen in eine neue Tabelle verschoben werden.


HHR 20170063-001A
HHR 20170207-074A
HHR 20170129-057A
HHR 20170183-057A
GFR 20170174-083A
KZR 20170078-074A
HHR 20170135-054A
WNR 20170172-079A
BFR 20170119-019A

Ich hoffe Ihr könnt mir helfen.
Danke und Gruß
Elkani


Angehängte Dateien Thumbnail(s)
   
Top
#2
Füge eine Überschriftenzeile ein, verwende den Autofilter (Textfilter --> Beginnt mit HHR) und verschiebe die gefilterten Zeilen.
Schöne Grüße
Berni
Top
#3
Hallo Berni,

danke für die schnelle Antwort.

Das Problem was ich habe, ist das Tabelle1, ständig aus einem Sharpoint aktualisiert wird.
Somit müsste ich jedes mal alles neu Filtern und verschieben.

Tabelle2 wird aber nach und nach mit weiterführenden Daten befüllt.
Deswegen war meine Idee, dass ich eine Formel hinterlege und jede neue Datei (HHR) die mich betrifft automatisch verschoben wird.


Ich hoffe ich habe es jetzt nicht zu Kompliziert erläutert.


Gruß
Elkani
Top
#4
Eine Formel kann nichts verschieben oder löschen, niemals nicht!
Das geht nur noch mit VBA. Die Quell- und Zieltabelle müssen eine Überschrift haben.

Code:
Sub DatenUebertragen()
Dim letzte As Long, freie As Long

freie = Sheets("Ziel").Cells(Rows.Count, "A").End(xlUp).Row + 1

With Sheets("Quelle")
   If .FilterMode = True Then ShowAllData
   letzte = .Cells(Rows.Count, "A").End(xlUp).Row
   .Columns("A").AutoFilter
   .Range("A1:A" & letzte).AutoFilter Field:=1, Criteria1:="=HHR*"
   .Range("A2:A" & letzte).SpecialCells(xlCellTypeVisible).Copy
   Sheets("Ziel").Cells(freie, "A").PasteSpecial Paste:=xlValues
   .Range("A2:A" & letzte).SpecialCells(xlCellTypeVisible).EntireRow.Delete
   .ShowAllData
End With

End Sub
Schöne Grüße
Berni
Top
#5
Hallo Berni,

danke noch einmal für Deine rasche Antwort.

Leider kenne ich mich mit VBA nicht aus. 
Werde es aber irgendwie versuchen anzueignen.

Ich melde mich dann, wenn ich weiter gekommen bin.

P.s.
Diese Formel habe ich in einem anderen Forum gesehen, zum ähnlichen Thema. Da wurde in Zelle C der Suchbegriff "Wert" genommen. Siehe Aufgabenbild im Anhang.

=WENNFEHLER(INDEX(Eins!A:A;KKLEINSTE(WENN(Eins!$C$1:$C$1000="Wert";ZEILE($1:$1000));ZEILE(A1)));"")

Könnte sowas Funktionieren?

Gruß und Danke
Elvir


Angehängte Dateien Thumbnail(s)
   
Top
#6
Ohne die Formel angesehen zu haben, verweise ich nochmals auf den ersten Satz meines vorhergegangenen Postings. Du hast eingangs danach geschrieben
Zitat:in eine neue Tabelle verschieben.
Kopieren ist etwas anderes als verschieben.
Schöne Grüße
Berni
Top
#7
Hallo Berni,

ja da hast du vollkommen recht. Ich habe es falsch beschrieben.

Ein Kopieren wäre die richtige Formulierung gewesen. Sorry.
Kannst Du mir bitte trotzdem sagen, ob dieses in der Art funktionieren würde?


Gruß
Elvir
Top
#8
Hallo Elvir,

wenn Deine Daten aus dem SharePoint ergänzt werden, kann es funktionieren. Probier es einfach aus Smile
Wenn Deine Daten jedoch durch aktuellere Daten ausgetauscht werden und Du die alten noch benötigst, geht das mit Formeln nicht und wir wären wieder bei dem Makro.

Beim Kopieren darfst Du natürlich nicht löschen - die Zeile mit dem .Delete müsste aus dem Code raus.

Tja, wenn beim Aktualisieren ein Teil der älteren Daten wieder mit kommt, müsstest Du im Zielbereich noch Duplikate entfernen.

Für weitere Hilfe einfach nochmal nachfragen ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Zu der Formel kann ich dir nicht helfen, das muss jemand anderes bewerten.
Schöne Grüße
Berni
Top
#10
Hallo Elvir.
 
Ich habe was erstellt, was meinem Verständnis Deines Problems entspricht. Prüfe mal, ob es Dir hilft.

Deine Werte stehen in Tabelle1, Spalte B ist ein Datenfeld und es kann natürlich C,D, und weitere Spalten geben.
In Tabelle2 benötige ich eine Leerzeile am Anfang und eine Hilfsspalte J
                WENNNV(VERGLEICH("HHR*";Tabelle1!A2:A$10;0)+ZEILE()-2;999)

Hier stehen jetzt alle Zeilennummern der Zellen mit „HHR“, aber leider doppelt, wenn Lücken vorhanden sind.
In Spalte B sortiere ich Spalte J, entferne die doppelten und kopiere mit INDIREKT den Wert aus Tabelle1:
                INDIREKT("Tabelle1!A"&AGGREGAT(15;2;(J2:J$10)/(J2:J$10<>J1:J$9);1))

Die weiteren Spalten kopiere ich genauso mit „Tabelle1!B“ etc.
Ich habe nur mit diesen wenigen Daten getestet, bin aber bereit nachzubessern, wenn der Ansatz Dir hilft und es mit Deinen echten Daten noch nicht rund läuft. Wenn ich Dir die Logik des AGGREGAT-Befehls erklären soll, gerne.

LG Peter


Angehängte Dateien
.xlsx   152-Forum 2018.11.19 Wildcard HHR.xlsx (Größe: 13,02 KB / Downloads: 2)
Top


Gehe zu:


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