Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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

VBA S-Verweis mehrere Ausgabewerte

VBA S-Verweis mehrere Ausgabewerte
05.05.2014 20:39:36
jeanny
Hallo Zusammen,
ich versuche mich derzeit an VBA, leider fehlt mir die notwendige Expertise um folgende Aufgabe zu lösen.
Ich habe mehrer Tabellenblätter (vereinfacht)
in Blatt 1: Materialnr /Name / etc.
123 /Name1/ etc.
124 /Name2/ etc.
in Blatt 2: Materialnr /Herkunftsland/ Zolltarifnr /etc
123 /DE / 567 /
124 /ES / 566 /
123 /TR / 588 /
Hierbei kann eine Materialnummer mehrere mögliche Herkunftsländer und Zolltarifnr. haben hier 123 mit DE/TR. Die Länder sollen durch Trenner spepariert in einem Feld neben der Materialnummer aus Blatt 1 aufgeführt werden. Auf Grund der Datenmenge ist die Nutzung von S-Verweis 2 (Funktion) im Macro nicht möglich - Macro ist zu träge. Für INDEX müsste ich beide Tabellen zusammenführen, was in diesem Fall sehr unübersichtlich würde, welche andere Möglichkeit habe ich?
Vorab schonmal vielen Dank für eure Unterstützung
J.

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA S-Verweis mehrere Ausgabewerte
05.05.2014 21:50:27
Raphael
Hallo J.
mal eine aus der Luft gegriffene Möglichkeit..

Die Datei https://www.herber.de/bbs/user/90506.xlsm wurde aus Datenschutzgründen gelöscht


Gruess
Raphael
P.S. Einfacher und bedürfnisgerechter geht es wenn der/die Fragende eine Beispieldatei zur Verfügung stellt.

AW: VBA S-Verweis mehrere Ausgabewerte
06.05.2014 14:31:16
jeanny
Hallo Raphael,
das scheint spontan ganz wunderbar zu funktionieren,danke dafür.
Wie wurde ich die Formel so erweitern, dass es auch die anderen Spalten ergänzt, oder müsste ich hierfür, den Code dublizieren und die Variaben neu definieren. Ich habe deine Exceldatei etwas ergänzt.
Desweiteren würde ich mich interessieren, wie ich damit umgehen würde, wenn ich eine breitere Kopfzeile in Blatt 1 hätte.
Gruss Jeanny
https://www.herber.de/bbs/user/90516.xlsm

Anzeige
Mach ein Pivottabelle aus deinen Daten (owT)
06.05.2014 14:38:06
EtoPHG

AW: Mach ein Pivottabelle aus deinen Daten (owT)
06.05.2014 16:07:56
jeanny
Hallo EtoPHG,
eine Pivot-Tabelle bringt mich an dieser Stelle nicht weiter, da es sich nur um ein Bruchteil eines Ganzen handelt und die Daten noch weiter verarbeitet werden.
Gruss Jeanny

....umso mehr!
06.05.2014 16:12:09
EtoPHG
Jeanny,
Mehr Daten und die Pivot passt sich automatisch an.
Zudem auch Daten aus einer Pivot können weiterverarbeitet werden.
Aber es ist dein Weg...hoffentlich wird er nicht immer steiniger und du stürzt am Ende ab ;-)
Gruess Hansueli

AW: Mach ein Pivottabelle aus deinen Daten (owT)
06.05.2014 23:07:46
Raphael_H
Hallo Jeanny,
habs dir angepasst. Habe auch noch ein Pivot eingefügt welche die Beiden Tabellen verknüpft. Ich nehme an das Hansueli etwas in der Richtung meinte. Aber er kann das sicher noch besser visualisieren als ich.
https://www.herber.de/bbs/user/90526.xlsm
Gruess
Raphael

Anzeige
AW: Mach ein Pivottabelle aus deinen Daten (owT)
07.05.2014 11:12:01
jeanny
Hallo Raphael,
danke für die neue Version, wenn du gestattest hätte ich noch eine letzte Frage:
Wenn ich für einen Artikel keine Werte im Blatt 2 hinterlegt habe gibt er mir nur mehrfach den Trenner also /// aus, wie würde ich hier noch die Anweisung einbauen, wenn Blatt 2, Artikel x "empty" dann, in Blatt 1, zu Artikel x keinen Wert ausgeben.
Gruss
jeanny
PS: Ich habe inzwischen versucht mit Pivot eine angemessene Lösung zu finden, bleibe wohl aber lieber beim Macro.

AW: Mach ein Pivottabelle aus deinen Daten (owT)
07.05.2014 21:20:10
jeanny
Hallo Raphael,
jetzt bin ich doch noch auf ein Problem gestoßen,
Wenn ich den Code abgeändert ein zweites Mal verwenden möchte, gibt er mir den Fehler 13 - mismatch aus. Woran könnte das liegen? Hier meine abgeänderte Variante:
Dim arrBlatt3 As Variant
Dim arrBlatt4 As Variant
Dim m As Long
Dim n As Long
'Die Sheets in Arrays packen
arrBlatt3 = Sheets("Hallo").UsedRange
arrBlatt4 = Sheets("Moin").UsedRange
'Arrays vergleichen und schreiben wo notwendig
For m = LBound(arrBlatt3) To UBound(arrBlatt3)
For n = LBound(arrBlatt4) + 1 To UBound(arrBlatt4) '+1 weil ich in diesem Beispiel eine Kopfzeile, Beginn Zeile 2
If arrBlatt4(n, 1) = arrBlatt3(m, 1) Then 'hier tritt der Fehler auf, bei (m, 2) meckert er nicht, die Datenbasis ist jedoch in der ersten Spalte und nicht der zweiten
arrBlatt3(m, 7) = arrBlatt3(m, 7) & arrBlatt4(n, 4) & "/"
arrBlatt3(m, 8) = arrBlatt3(m, 8) & arrBlatt4(n, 5) & "/"
arrBlatt3(m, 9) = arrBlatt3(m, 9) & arrBlatt4(n, 6) & "/"
arrBlatt3(m, 10) = arrBlatt3(m, 10) & arrBlatt4(n, 2) & "/"
arrBlatt3(m, 11) = arrBlatt3(m, 11) & arrBlatt4(n, 7) & "/"
arrBlatt3(m, 12) = arrBlatt3(m, 12) & arrBlatt4(n, 8) & "/"
arrBlatt3(m, 13) = arrBlatt3(m, 13) & arrBlatt4(n, 9) & "/"
arrBlatt3(m, 14) = arrBlatt3(m, 14) & arrBlatt4(n, 10) & "/"
arrBlatt3(m, 15) = arrBlatt3(m, 15) & arrBlatt4(n, 11) & "/"
arrBlatt3(m, 16) = arrBlatt3(m, 16) & arrBlatt4(n, 12) & "/"
arrBlatt3(m, 17) = arrBlatt3(m, 17) & arrBlatt4(n, 13) & "/"
arrBlatt3(m, 18) = arrBlatt3(m, 18) & arrBlatt4(n, 14) & "/"
arrBlatt3(m, 19) = arrBlatt3(m, 19) & arrBlatt4(n, 15) & "/"
arrBlatt3(m, 20) = arrBlatt3(m, 20) & arrBlatt4(n, 16) & "/"
arrBlatt3(m, 21) = arrBlatt3(m, 21) & arrBlatt4(n, 17) & "/"
arrBlatt3(m, 22) = arrBlatt3(m, 22) & arrBlatt4(n, 18) & "/"
End If
Next n
Next m
'Ganzes arrBlatt3 wieder ins Tabelle1 kopieren
'Range wird explizit das Sheet "Hallo" zugeteilt
Sheets("Hallo").Range("A1").Resize(UBound(arrBlatt3), 22) = arrBlatt3 'hier anpassen
Der Fehler tritt auch nicht auf, wenn ich die Datei vorher abspeichere und nur den Code ohne alles was dem vorangeht laufen lasse. Ich bin etwas ratlos :( Leider ist es mir nicht möglich die Datenbasis als Excel zur Verfügung zu stellen. Vielleicht, kann man jedoch schon so was erkennen.
Gruss
jeanny

Anzeige
AW: Mach ein Pivottabelle aus deinen Daten (owT)
07.05.2014 22:41:24
Raphael_H
Hallo Jeanny,
wie gesagt, ohne eine authentische Beispieldatei von dir ist es schwierig den Fehler zu finden, oder aus diesem sehr rudimentären Makro etwas passendes zu machen.
Der Fehler kommt wahrscheinlich von einer Formel die du in der Spalte 1 hast welche einen Fehlerwert zurückgibt Div/0, #NV oder so ein ähnlicher.
Option Explicit
Sub x()
Dim arrBlatt3 As Variant
Dim arrBlatt4 As Variant
Dim m As Long
Dim n As Long
Dim Spalte As Long
'Die Sheets in Arrays packen
arrBlatt3 = Sheets("Hallo").UsedRange
arrBlatt4 = Sheets("Moin").UsedRange
'Arrays vergleichen und schreiben wo notwendig
For m = LBound(arrBlatt3) To UBound(arrBlatt3)
For n = LBound(arrBlatt4) + 1 To UBound(arrBlatt4) '+1 weil ich in diesem Beispiel eine  _
Kopfzeile, Beginn Zeile 2
If arrBlatt4(n, 1) = arrBlatt3(m, 1) Then 'hier tritt der Fehler auf, bei (m, 2)  _
meckert er nicht, die Datenbasis ist jedoch in der ersten Spalte und nicht der zweiten
For Spalte = 7 To 22
If arrBlatt4(n, Spalte - 3)  "" Then
arrBlatt3(m, Spalte) = arrBlatt3(m, Spalte) & arrBlatt4(n, Spalte - 3) & _
End If
Next Spalte
End If
Next n
Next m
'Ganzes arrBlatt3 wieder ins Tabelle1 kopieren
'Range wird explizit das Sheet "Hallo" zugeteilt
Sheets("Hallo").Range("A1").Resize(UBound(arrBlatt3), 22) = arrBlatt3 'hier anpassen
End Sub
Gruess
Raphael

Anzeige
Fehler 13 mismatch umgehen
08.05.2014 16:33:45
jeanny
Hallo Raphael,
jetzt wo ich weiss, woran es liegt hier nochmal eine Beispieltabelle:
https://www.herber.de/bbs/user/90574.xlsm
In Tabelle1 möchte ich unter Artikel 2 gerne "" statt "///" ausgegeben bekommen.
Der mismatch Fehler bestehlt leider weiterhin in Macro "Zusammenführen_neu", ich habe noch keine Variante gefunden, um ihn zu umgehen.
Dein Code:
If arrBlatt4(n, Spalte - 3)  "" Then
arrBlatt3(m, Spalte) = arrBlatt3(m, Spalte) & arrBlatt4(n, Spalte - 3) & _

Hilft mir leider nicht weiter, da die Spalten "durcheinander" sind.
Danke für deine Unterstützung
Gruss
jeanny

Anzeige
AW: Fehler 13 mismatch umgehen
08.05.2014 20:18:59
Raphael_H
N'abend Jeanny,
habe dir noch eine Fehlerprüfung eingebaut die das Problem mit dem Fehler 13 beheben sollte.
Bei den anderen sehe ich ohne Beispieltabelle keine andere Lösung als die einzelnen Spalten mit eine If abzufragen.
https://www.herber.de/bbs/user/90582.xlsm
Gruess
Raphael

AW: Fehler 13 mismatch umgehen
09.05.2014 20:16:48
jeanny
Hi Raphael,
dank deiner Hilfe konnte ich mein Problem lösen,
If Not VarType(arrBlatt2(j, 1)) = vbError Then

habe ich durch
If Not IsError(arrBlatt2(j, 1)) = vbError Then

ersetzt
Vielen Dank nochmal
Gruß jeanny

Anzeige
Danke fürs Feedback owT
09.05.2014 22:04:00
Raphael_H

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige