Excel - Eine Makrokopie in eine Zelle, die auf bestimmten Kriterien basiert

Problem

Ich stecke fest. Ich hoffe mir kann heute jemand weiterhelfen. Ich habe eine Excel-Tabelle mit 1400 Zeilen. Die ersten 3 Zeilen sind irrelevant (Überschriften). Ich habe 3 Zellen mit $ tring-Inhalt (B: C: D). Was ich tun muss, ist ein Makro zu erstellen, das speziell in Spalte B und Spalte D nach Nicht-Null-Werten suchen kann. In dieser Tabelle befinden sich mehrere Zellen, die denselben Wert haben müssen. Spalte B und D müssen verglichen und mit Werten ungleich Null gefunden werden. Und in der gleichen Instanz, in der auch Spalte B erneut gefunden wird (Schleife) (gleicher Zelleninhalt, aber andere Zeile), hat Spalte D einen Nullwert (fehlender Inhalt). Ich muss dieses Col D mit demselben Inhalt füllen wie den ersten Datensatz mit Col B- und D-Inhalten. In meinem Beispiel ist der Wert fest codiert, ich weiß nicht, wie ich es sonst tun soll. Ich bin sehr verloren und brauche etwas Hilfe, um dies zu vervollständigen. Das habe ich.

 Unter _MacroUser10 () Setze I = Arbeitsblätter ("Sheet2") Dim d Dim jd = 1 'Schleifenzähler j = 4' beginne in der 4. Reihe wegen Überschriften Do Until ActiveCell (I.Range ("B" & j) = " User Portfolio Group ") und ActiveCell (I.Range (" D "& j null)) 'loop Wenn I.Range (" B "& j) =" User2010 ", dann' hat die Zelle den Titel User2010 ... etc. Wenn ich .Range ("D" & j) = "" Dann soll dies die Nullwerte in D finden. D = d + 1 End If i.Rows (d) .Value = I.Rows (j) .Value End If j = j + 1 Loop End Sub 

Alles in allem. Ich muss den Inhalt in Zelle B $ und den Inhalt in Zelle D $ nachschlagen. Es wird an beiden Stellen eine Zeile mit Inhalt geben. Dann muss ich alle anderen übereinstimmenden Zeilen finden, die mit B $ übereinstimmen und keine Werte in D $ haben. Ich muss diese fehlenden Werte vom Nicht-Null-D $ zum Null-D $ hinzufügen.

Lösung

Wenn es immer so ist, dass die gefüllte Zeile vor der leeren Zeile auftritt, können Sie das Dictionary-Objekt verwenden. Dafür

  • Durchlaufe deine erste Reihe bis zum Ende
  • Wenn beide Zellen nicht leer sind, kombinieren Sie den Wert von B und D als Schlüssel und den Wert von C als Wert.
  • Überprüfen Sie beim Durchlaufen der Zeilen zunächst, ob sich dieser Schlüssel im Wörterbuch befindet. Wenn ja, muss der Wert else zum Wörterbuch hinzugefügt werden

 'dic-Objekt erstellen Set dicMyDic = CreateObect ("Scripting.Dictionary")' So kann der Schlüssel sein strKey = B1 & "|" & D1 'prüfe, ob der Wert von D leer ist oder nicht', um den Wert zu dic IF Not (dicMyDic.Exists (strKey)) hinzuzufügen, dann dicMyDic.Add Key: = strKey, Item: = val ', um den Wert von dic IF zu erhalten (dicMyDic.Exists (strKey)) dann val = dicMyDic (strKey) 

Danke an rizvisa1 für diesen Tipp.

Vorherige Artikel Nächster Artikel

Top-Tipps