Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1772to1776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabelle teilweise kopieren

Tabelle teilweise kopieren
19.07.2020 11:22:20
Siggi
Ich habe eine Tabelle mit 8000 Datensätzen (soll variabel sein)
Spalte A sind Namen (string)
Spalte B ist das Geburtsland (string)
Nun möchte ich die Tabelle kopieren (Spalte A nach F und Spalte B nach G)
Hierbei sollen dann alle Zeilen ignoriert werden, die bei Geburtsland einen bestimmten Wert haben (z.B. Brasilien)
Wenn Brasilien z.B. 500x vorkommt, hat die neue Tabelle nur noch 7500 Einträge.
Die Herausforderung:
Da es Werte in den Spalten A und B gibt, können die Spalten nicht einfach nach F und G kopiert werden und die Zeilen danach gelöscht werden, da dann ja auch die Quelle (Spalte A und B) verändert wird.
Die neue Tabelle soll unbedingt neben der Quelle stehen, daher Spalte F und G.
Ein Makrocode der jede einzelne Zeile nach einem kompletten Kopiervorgang der Tabelle kontrolliert, ggf. die Zellen (nicht Zeilen) löscht und dann die restlichen Zeilen um eine Zeile nach oben verschiebt (um die Lücke zu schließen), erscheint mir von der Laufzeit zu hoch. Das würde dann Stunden dauern.
Eine Kontrolle vor dem Kopieren jeder einzelnen Zeile wird bestimmt genauso lange dauern.
Mir fehlt die zündende Idee.
Hat Jemand einen brauchbaren Ansatz?
Ich freue mich schon :-)
Gruß Siggi

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle teilweise kopieren
19.07.2020 12:06:02
Günther
Moin Siggi,
das sollte mit Power Query machbar sein ...
Günther
AW: Tabelle teilweise kopieren
19.07.2020 15:15:01
Siggi
Hi, vielleicht eine Möglichkeit, aber ich denke mehr an Bekanntes in der Anwendung.
Danke dir.
Auflistung ohne Brasilien
19.07.2020 12:54:20
WF
Hi,
schreib in F1 die Arrayformel:
{=KKLEINSTE(WENN(B$1:B$8000"";WENN(B$1:B$8000"Brasilien";A$1:A$8000));ZEILE(X1))}
und in G1:
=INDEX(B:B;VERGLEICH(F1;A$1:A$8000;0))
beide runterkopieren
WF
Wie das bei 8000 Zeilen mit der Performance aussieht ?
da fehlte der INDEX auf A
19.07.2020 13:11:03
WF
in F1:
{=INDEX(A:A;KKLEINSTE(WENN(B$1:B$8000"";WENN(B$1:B$8000"Brasilien";ZEILE(X$1:X$8000)));ZEILE(X1)) )}
WF
AW: da fehlte der INDEX auf A
19.07.2020 15:13:34
Siggi
Hi,
die Performance wäre nicht gut. Trotzdem Danke, eine gute Idee.
Die von Gerd ist schneller
Anzeige
AW: Tabelle teilweise kopieren
19.07.2020 12:56:00
GerdL
Hallo Siggi
Sub Unit()
Dim A, B
Dim x As Long, y As Long
Dim Exclusion As String
Exclusion = "Brasilien"
A = Cells(1, 1).CurrentRegion.Columns("A:B").Value
ReDim B(1 To UBound(A, 1), 1 To 2)
For x = 1 To UBound(A, 1)
If A(x, 2)  Exclusion Then
y = y + 1
B(y, 1) = A(x, 1)
B(y, 2) = A(x, 2)
End If
Next
Range("F1").Resize(UBound(B, 1), 2) = B
End Sub

Gruß Gerd
AW: Tabelle teilweise kopieren
19.07.2020 15:12:33
Siggi
Hi Gerd,
der Durchlauf dauert weniger als 1 Sekunde. Wahnsinn.
Wenn ich mehrere Ausschüsse hätte, z.B. "Brasilien" und "Italien" und "Schweden", wie würde dann der Code aussehen?
So hier?
Sub Unit2()
Dim A, B
Dim x As Long, y As Long
Dim Exclusion1 As String
Dim Exclusion2 As String
Dim Exclusion3 As String
Exclusion1 = "Brasilien"
Exclusion2 = "Italien"
Exclusion3 = "Schweden"
A = Cells(1, 1).CurrentRegion.Columns("A:B").Value
ReDim B(1 To UBound(A, 1), 1 To 2)
For x = 1 To UBound(A, 1)
If A(x, 2)  Exclusion1 And A(x, 2)  Exclusion2 And A(x, 2)  Exclusion3 Then
y = y + 1
B(y, 1) = A(x, 1)
B(y, 2) = A(x, 2)
End If
Next
Range("F1").Resize(UBound(B, 1), 2) = B
End Sub
Funktioniert jedenfalls
Anzeige
AW: Tabelle teilweise kopieren
19.07.2020 15:34:12
Siggi
Ich wollte jetzt noch eine Überschrift einbauen, also eine Zeile oben eingefügt.
Die Spaltennamen sind also in Zeile 2 und die daten ab Zeile 3.
Jetzt funktioniert es nicht mehr.
Habe ein bisschen ausprobiert, komme aber nicht auf die notwendigen Änderungen.
Bräuchte noch einen Anstoß :-)
Gruß Siggi
AW: Tabelle teilweise kopieren
19.07.2020 16:53:23
Siggi
Habe es gefunden.
Man braucht gar nichts zu ändern.
Toll!
Danke an Alle die mitgeholfen haben.
Alternative
19.07.2020 18:33:33
Werner
Hallo,
mit Formel in Hilfsspalte und RemoveDuplicates (in etwa genauso schnell).
Public Sub aaa()
Dim loLetzte As Long
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, "B").End(xlUp).Row
.Columns("F:H").ClearContents
.Columns("A:B").Copy .Columns("F")
.Range(.Cells(2, "H"), .Cells(loLetzte, "H")).FormulaLocal = _
"=WENN(ODER(G2=""Brasilien"";G2=""Italien"";G2=""Schweden"");0;Zeile())"
.Range(.Cells(2, "H"), .Cells(loLetzte, "H")).Value = .Range(.Cells(2, "H"), _
.Cells(loLetzte, "H")).Value
.Range("H2") = 0
.Range("$F$2:$H$" & loLetzte).RemoveDuplicates Columns:=3, Header:=xlNo
.Columns("H").ClearContents
End With
End Sub
Gruß Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige