Clever-Excel-Forum

Normale Version: Excel VBA VLookup
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo Schauan,

das ist der ganze Code was diesen Bereich betrifft Huh 

Ich möchte in dem Arbeitsblatt "zwischenablage" in den Spalten 3,8 und 9 das Material  raus suchen.
In dem Arbeitsblatt "Lager" möchte ich dann das jeweilige Material überprüfen ob es in der Spatel 11 die Eigenschaft "x" hat oder nicht. Das Material welches überprüft wird steht in der Spalte A (Lager).

Wenn die Eingeschaft "x" fehlt muss eine Aktion statt finden.
Hallöchen,

wie gesagt, in Deinem geposteten Code tust Du in Spalte A nach 3, 8 und 9 suchen. 3, 8 und 9 sind Deine Materialnumern?
Hier mal Deine Zeile für Spalte A (=1):
vRetP = Application.IfError(Application.VLookup(suche3, Sheets("Lager").[A2:K1048576], 11, False), "x")

Wenn Du in Spalte 8 suchen willst, dann musst Du die Suche bzw. den SVERWEIS auch damit beginnen. Wenn ich mich nicht verrechnet habe, musst Du weiterhin statt 11 dann 4 nehmen.
Hier mal eine Zeile für Spalte H (=8):
vRetP = Application.IfError(Application.VLookup(suche3, Sheets("Lager").[H2:K1048576], 4, False), "x")
Guten Abend Schauan,

Ich habe das Gefühl das wir aneinander vorbei schreiben ?. Ich versuche die Sachlage nochmal zu schildern 

Im Arbeisblatt „Zwischenablage“In den Spalten 3,8 und 9 stehen Materialien. Diese haben eine eindeutige Materialnummer / Code.
Ich möchte überprüfen ob diese Materialien eine bestimmte Eigenschaften haben.
Hierzu habe ich den Sverweis in das Arbeitsblatt „Lager“.
Im Arbeitsblatt Lager sind alle Materialien und deren jeweilige Eigenschaften gelistet.
Hier steht der Materialcode in der Spalte a und in der 11 Spalte wir mit Hilfe eines X Unterschieden ob das Material auf eine bestimmte Art bearbeitet werden kann.

Kannst du mir folgen? Wenn was unklar ist frag bitte nach.

Schönen Abend noch

Guten Abend Schauan,

Ich habe das Gefühl das wir aneinander vorbei schreiben ?. Ich versuche die Sachlage nochmal zu schildern 

Im Arbeisblatt „Zwischenablage“In den Spalten 3,8 und 9 stehen Materialien. Diese haben eine eindeutige Materialnummer / Code.
Ich möchte überprüfen ob diese Materialien eine bestimmte Eigenschaften haben.
Hierzu habe ich den Sverweis in das Arbeitsblatt „Lager“.
Im Arbeitsblatt Lager sind alle Materialien und deren jeweilige Eigenschaften gelistet.
Hier steht der Materialcode in der Spalte a und in der 11 Spalte wir mit Hilfe eines X Unterschieden ob das Material auf eine bestimmte Art bearbeitet werden kann.

Kannst du mir folgen? Wenn was unklar ist frag bitte nach.

Schönen Abend noch
Hallo Flo,

die Suchvariablen sollten auch gefüllt werden! Oder du schreibst die Suchwerte direkt in die Suchanweisungen.
In deinem Code passiert das leider nicht:
Code:
    Dim suche3 As Variant: suche = 3
    Dim suche8 As Variant: suche = 8
    Dim suche9 As Variant: suche = 9

Aber vielleicht verstehst Du André`s Anmerkung besser, wenn Du Dir die Hilfe zu VLOOKUP anschaust: https://learn.microsoft.com/de-de/office...on.vlookup

Gruß Uwe
@Uwe,
danke für Deinen Hinweis Smile

@Flo,

Zitat:ei dem Code verzweifel ich aber. Mit dem Material aus der Spalte 1 klappt es wie gewohnt. Bei Spalte 8 & 9 geht leider nichts.
ja, der Satz lässt mich auch verzweifeln Sad Der hat mich zu meiner Antwort bezüglich A2, H2 usw. verleitet.


noch mal der Teil:
vRetP = Application.IfError(Application.VLookup(suche3, Sheets("Lager").[A2:K1048576], 11, False), "x")

Wie gesagt, Du erhältst bei Treffer den Inhalt von Spalte 11.
Steht da nix, ergibt das nix bzw. 0, steht da ein x, bekommst Du ein x, und hast Du keinen Treffer, bekommst Du auch x.
Und, wie gesagt, Du suchst in deinen 3 Code-Zeilen nur nach 3, 8 und 9

Willst Du was aus Spalte 3 aus dem Zwischenlager, dann z.B. so
vRetP = Application.IfError(Application.VLookup(Cells(xxx, suche3), Sheets("Lager").[A2:K1048576], 11, False), "x")
bzw., wenn Du nicht auf dme Blatt bist, mit
vRetP = Application.IfError(Application.VLookup(Sheets("Zwischenlager").Cells(xxx, suche3), Sheets("Lager").[A2:K1048576], 11, False), "x")

wobei xxx eine Zeilennummer enthalten muss. Eventuell wolltest Du das auch mit der Variablen LA erreichen wie weiter unten im Code?
Guten Morgen Uwe,


Zitat:die Suchvariablen sollten auch gefüllt werden! Oder du schreibst die Suchwerte direkt in die Suchanweisungen.
In deinem Code passiert das leider nicht:

Ich dachte die Suchvariable ist gefüllt.
Sollte es so aussehen?

Code:
    Dim suche3 As Variant: suche3 = 3
    Dim suche8 As Variant: suche8 = 8
    Dim suche9 As Variant: suche9 = 9

wenn ich foldenden Code über die MsgBox ausgebe kommt nur Wahr als Antwort. Sollte hier nicht ein "x" auftauchen?
Code:
MsgBox vRetP = Application.IfError(Application.VLookup(suche3, Sheets("Lager").[A2:K1048576], 11, False), "x")MsgBox vRetP = Application.IfError(Application.VLookup(suche3, Sheets("Lager").[A2:K1048576], 11, False), "x")


Die Suche mit den VRetP klappt, die anderen beiden klappen nicht.

Ich habe mir den Link durchgelesen und bin immer noch der Meinung das es richtig ausgefüllt ist. Ich lasse mich natürlich auch belehren.
Das erste ARgument ist das "Stichwort" nach dem gesucht werden soll.

Sorry das es sich so zieht. Bin halt blutiger Anfänger.
Hallöchen,

1) eine Antwort von mir steht über Deinem Beitrag - hatten wir fast zur selben Zeit abgesendet Smile
2) nicht MsgBox vRetP = ... sondern nur MsgBox vRetP
Hallo Flo,

(29.11.2022, 08:07)legiminator schrieb: [ -> ]Sollte es so aussehen?
Code:
    Dim suche3 As Variant: suche3 = 3
    Dim suche8 As Variant: suche8 = 8
    Dim suche9 As Variant: suche9 = 9

Korrekt. Smile

Gruß Uwe
Moin!
Mehr oder weniger off topic:
Meiner Meinung nach wird eine Variable nur dann benötigt, wenn sie
• sich während der Laufzeit ändert (z.B. Zählvariable For x = 1 To 10)
• errechnet werden muss (Datum = Date)
Eine einmalige Zuweisung eines konstanten Wertes mache ich deshalb mittels Konstante.

PHP-Code:
Const Drei As Long 3
Dim Morgen 
As DateMorgen Date 

Sind aber nur meine 2 Cents …
Gruß Ralf

26865

Thema "Codehygiene":

Sheets("Lager").[A2:K1048576]
-> Bei "Sheets" ist nicht klar, was für ein Blatttyp hier gemeint ist. Nimm bitte WORKsheet(s), wenn du ein TABELLENBlatt ansprechen willst. 
-> Die eckigen Klammern um die Bereichsangabe sind eine verkürzte Schreibweise für die Evaluate-Methode. Das ist die langsamste und unflexibelste Art und Weise, auf Bereichsdaten zuzugreifen. Macht man also nicht. Nutze für eine ordentliche Referenzierung Worksheets(...).Range("...") - das kommt deiner Schreibweise am nächsten und bietet genügend Flexibilität, wenn du mit variablen Bereichen arbeiten willst. Dann musst du dir nicht zig Schreibweisen merken.

Wäre schon gut, wenn man bei einem so simplen Thema wie hier auch Fortschritte sieht. Zum wiederholten Male stellte ich die Frage: WAS SOLL PASSIEREN, WENN DAS MATERIAL NICHT GEFUNDEN WIRD?
Deine Antworten sind schwammig und unbrauchbar. "Der Code soll weiterlaufen" ist doch selbstverständlich. ABER WAS SOLL ER TUN? WIE SOLL ER AUF DAS FEHLEN REAGIEREN? 

Um den Sinn der Frage (nochmals) zu erläutern 
Zitat:Im Arbeisblatt „Zwischenablage“In den Spalten 3,8 und 9 stehen Materialien. Diese haben eine eindeutige Materialnummer / Code.

Ich möchte überprüfen ob diese Materialien eine bestimmte Eigenschaften haben.
Wenn das Material in deiner Liste aber nicht vorhanden sind, kannst du logischerweise auch nicht feststellen, ob dieses Material di "bestimmte Eigenschaft" hätte. Es ist schlichtweg ein undefinierter Zustand: Vielleicht musst du ein Maß abziehen, vielleicht auch nicht. Welches Ergebnis erwartet du in dem Fall? Ist es egal? Oder ist das dann das Problem eines anderen, wenn das Produkt nicht passt, weil du fälschlicherweise etwas (nicht) abgezogen hast vom Maß? Das kannst du doch nicht ignorieren, sondern du musst geeignet REAGIEREN!


Solange du diese Grundlage nicht endlich mal glattziehst, brauchen wir den Rest doch garnicht thematisieren - alles für die Katz.

Zitat:Wenn was unklar ist frag bitte nach.
Klar, machen wir. Dann musst du diese Fragen aber auch verwertbar beantworten.
Seiten: 1 2 3