Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1900to1904
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
Daten in Matrix suchen
27.09.2022 06:00:58
Byörn
Guten Morgen liebe Leute,
ich suche nach einer VBA Lösung. Ich bekomme eine Datei mit Daten. In der Zeile 24 stehen Nummern von Spalte B bis DE. In der Spalte A steht Text von 25 bis 40
Nun soll das Makro die Zellen kopieren un in eine andere Datei einfügen. Wenn in der Zelle nichst vorhanden ist, dann soll Null drinnen stehen.
Anbei sende ich eine Testdatei. Danke für eure Hilfe.
https://www.herber.de/bbs/user/155392.xlsx

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in Matrix suchen
27.09.2022 06:36:37
Oberschlumpf
Hi Byörn,
hier passiert das, was du haben möchtest, laut deiner Beschreibung
https://www.herber.de/bbs/user/155393.xlsm
Starte das Makro sbCopyToNew
- es wird eine neue Datei erstellt (du schreibst "un in eine andere Datei einfügen". Da du nicht schreibst, in welche Datei, gehe ich davon aus, du meinst eine neue Datei)
- der Zell-Bereich "A24:DE40" wird im Blatt "Daten" kopiert und in der neuen Datei ab Zelle A1 eingefügt (das Daten-Blatt enthält zwar auch Daten in den Spalten DF bis DH, aber du hattest ja explizit bis DE geschrieben; und eine Startzelle in neuer Datei hast du auch nicht genannt, daher denk ich, alles rein ab A1)
- alle Zellen in neuer Datei ohne Inhalt erhalten den Wert 0
Die neue Datei ist noch nicht gespeichert.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Daten in Matrix suchen
27.09.2022 07:34:03
Byörn
Hallo Thorsten,
sorry für die falsche Info. Ich möchte die Daten aus dem Sheet Daten in die Tabelle1 in den richtigen Zellen einfügen.
AW: Daten in Matrix suchen
27.09.2022 08:03:51
Oberschlumpf
Hi Byörn,
1. Schritt
in "Daten" den gewünschten Bereich A24:DE40 markieren + kopieren
zu "Tabelle1" wechseln, Zelle A1 auswählen + Entertaste drücken
2. Schritt
in Google mit Suchtext "vba leere zellen mit 0 füllen" hab ich das gefunden:
Bereich markieren. (in der Zieltabelle)
Register Start, Befehlsgruppe Bearbeiten, Suchen und Auswählen, Gehe Zu, Inhalte; Leerzellen.
Bearbeitungsleiste, 0, Strg+Enter
fertig...fast...bis jetzt war alles "per Hand" durchgeführt
Du möchtest ja eine VBA-Lösung
- alles auf 0 setzen (oder eben Datei ohne speichern schließen, wieder öffnen)
- Makrorecorder starten
- 1. Schritt wiederholen
- Makrorecorder beenden
- Makrorecorder starten
- 2. Schritt wiederholen
- Makrorecorder beenden
Jetzt hast du für 2 Schritte 2 Makros.
Füge diese Makros sinnvoll zusammen und deine Frage ist beantwortet.
Hilfts?
Ciao
Thorsten
Anzeige
AW: nachgefragt, warum VBA? ...
27.09.2022 08:13:33
neopa
Hallo Björn,
... es ist auch mit folgender einfacher Formel realisierbar.
In B2: =INDEX(Daten!$A:$DZ;VERGLEICH($A2;Daten!$A:$A;0);VERGLEICH(B1;Daten!$24:$24;0))und diese nach rechts und unten ziehend kopieren.
Alternativ zur Formel- und VBA-Lösung wäre auch noch eine Power Query (PQ)-Lösung möglich.
Gruß Werner
.. , - ...
AW: nachgefragt, warum VBA? ...
27.09.2022 08:21:23
Byörn
Guten Morgen Werner,
Danke für diese Lösung. Die ist fast perfekt. Schön wäre noch, wenn eine Zahl aus der Tabelle1 Zeile 1 nicht vorhanden ist, dass kein #NV kommt
AW: dann klammere noch mit WENNFEHLER(...;"") owT
27.09.2022 08:27:13
neopa
Gruß Werner
.. , - ...
AW: Daten in Matrix suchen
27.09.2022 11:36:44
snb
Tabelle5 wird Sheet1; Sheet1 wird Sheet2

Sub M_snb()
On Error Resume Next
sn = Sheet1.Cells(24, 1).CurrentRegion
sp = Sheet2.UsedRange
sq = Sheet2.UsedRange.Rows(1)
For jj = 2 To UBound(sn, 2)
y = Application.Match(sn(1, jj), sq, 0)
For j = 2 To UBound(sn)
sp(j, y) = sn(j, jj)
Next
Next
Sheet2.Cells(30, 1).Resize(UBound(sp), UBound(sp, 2)) = sp
End Sub

Anzeige
AW: Daten in Matrix suchen
27.09.2022 14:45:30
Daniel
Hi
wenns eine reine VBA-Lösung sein soll, dann beispielsweise über das Dictionary-Objekt.

Sub test()
Dim arrQ, arrZ
Dim dic
Dim z As Long, s As Long
Dim ID As String
arrQ = Sheets("Daten").Cells(24, 1).CurrentRegion.Value
arrZ = Sheets("Tabelle1").Cells(1, 1).CurrentRegion.Value
Set dic = CreateObject("scripting.dictionary")
For z = 2 To UBound(arrQ, 1)
For s = 2 To UBound(arrQ, 2)
ID = arrQ(z, 1) & "|" & arrQ(1, s)
If arrQ(z, s) = "" Then
dic(ID) = 0
Else
dic(ID) = arrQ(z, s)
End If
Next
Next
For z = 2 To UBound(arrZ, 1)
For s = 2 To UBound(arrZ, 2)
ID = arrZ(z, 1) & "|" & arrZ(1, s)
If dic.exists(ID) Then
arrZ(z, s) = dic(ID)
Else
arrZ(z, s) = "---"
End If
Next
Next
Sheets("Tabelle1").Cells(1, 1).CurrentRegion.Value = arrZ
End Sub
Gruß Daniel
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige