Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel VBA VLookup
#11
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.
Antworten Top
#12
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")
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • legiminator
Antworten Top
#13
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
Antworten Top
#14
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
[-] Folgende(r) 2 Nutzer sagen Danke an Kuwer für diesen Beitrag:
  • schauan, legiminator
Antworten Top
#15
@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?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#16
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.
Antworten Top
#17
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#18
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • legiminator
Antworten Top
#19
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • legiminator
Antworten Top
#20
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.
Antworten Top


Gehe zu:


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