2016-09-29 3 views
0

Ziel: Schleife durch eine Spalte von Zahlen/Codes und diese Codes zu ihren Beschreibungen (in einer Liste) und füllen die Zelle in der nächsten Spalte mit der zugehörigen Beschreibung. Zum Beispiel: A2 = 123456, A3 = 885467, A4 = 954789 usw. Lesen Sie in der ersten Zelle, A2 (123456). Finde 123456 in der Liste (123456 = Finanzen), platziere "Finanzen" in B2. Lesen Sie 885467 (A3). Finde (885467 = Marketing) in der Liste, platziere "Marketing" in B3 ... und so weiter. Die nächstgelegene ich gekommen bin, dies zu lösen ist:Durchlaufen Sie jede Zelle in einer Spalte, vergleichen Sie jede Zelle mit einer Liste und geben Sie eine zugehörige Beschreibung in eine benachbarte Zelle ein

Sub JobCodeDescription() 
    Dim ws As Worksheet 
    For Each ws In ThisWorkbook.Worksheets 
     'There are 3 worksheets in this Workbook. 
      'Job Code 
      'Location Code 
      'Entity Code 
     'Dim x As Number 
     Dim f As Range 
     For Each f In ActiveSheet.UsedRange.Columns("F").Cells 
      If f = "00053" Then ActiveCell.Offset(0, 1).Value = "Finance" 
      ElseIf f = "00056" Then ActiveCell.Offset(0, 1).Value = "Marketing" 
      ElseIf f = "00082" Then ActiveCell.Offset(0, 1).Value = "Technology" 
      ' continues on... 
     Next f 
     ' This works but the Active Cell DOES NOT move with "f". So the same cell continues to be populated and overwritten. 
    Next ws 
End Sub 

Diese Codes nie zu mir kommen, in einer bestimmten Reihenfolge und es werden Duplikate sein, also habe ich versucht, in aufsteigender Reihenfolge zu sortieren. Das scheint zu helfen, aber ich kann einfach nicht herausfinden, wie man die Jobcodes durchläuft und die Liste durchläuft, um die passende Code-Beschreibung zu finden. Ich könnte das alles falsch machen. Ich möchte nur die Codes in Spalte A mit einer flachen Datei vergleichen, aber ich weiß nicht, wie ich das machen soll. Die "Flat-Datei" ist nur eine .txt Datei und es ist eine Liste der Job Codes und ihrer Beschreibungen. Beispiel: 123456 = Finanzen. Jede Hilfe würde sehr geschätzt werden.

+1

Kannst du stattdessen von deiner Beschreibung aus 'Vlookup()' oder 'Index/Match' verwenden? Könnten Sie eine Beispieltabelle veröffentlichen und die erwartete Ausgabe testen? Es klingt, als könnte das mit Formeln gemacht werden, es sei denn, ich verpasse etwas. – BruceWayne

+1

Sie müssen "ActiveCell.Offset (0, 1) .Value" in "f.Offset (0, 1) .Value" ändern. –

+0

Können Sie einen Screenshot der ersten 3 Zeilen des Arbeitsblatts und der Flat-Datei bereitstellen? –

Antwort

2

Von Ihrer Beschreibung, wenn ich es richtig verstehe, denke ich, dass Sie mit Vlookup() besser dran wären, da es eine eingebaute Funktion ist und keine Makros benötigt.

Wenn Ihre Datentabelle in J1:K4 ist, und die Liste der Konten ist in A1:A4, können Sie die folgende Formel in B1, verwenden und kopieren unten:

=VLOOKUP(A1,$J$1:$K$4,2,FALSE)

Dies wird den Bereich J1:J4 suchen der Wert in A1, dann wieder den passenden Wert in Spalte K:

enter image description here

Aber, wenn Sie Ihr Makro verwenden möchten, ist @ThomasInzina korrekt, müssen Sie f.Offset(...) statt ActiveCell.Offset(...) verwenden.

+0

Yall Rock !!! @ Bruce, und Thomas. Beide Lösungen haben funktioniert! Ich benutzte zuerst die SVERWEIS-Option, um die Datei rechtzeitig zu bekommen ... Ich arbeite jetzt an der Erstellung eines Makros mit der Option f.Offset(). Danke nochmal!! – Smoken55

Verwandte Themen