Excel - Макрокопиране в клетка въз основа на конкретен критерий

Проблем

Аз съм заседнал. Надявам се, че някой може да ми помогне днес. Имам Excel таблица с 1400 реда. Първите 3 реда са без значение (заглавия). Имам 3 клетки с $ tring съдържание (B: C: D). Това, което трябва да направя, е да създам макрос, който може конкретно да погледне в колона B и колона D за ненулеви стойности. В тази електронна таблица има няколко клетки, които трябва да имат същата стойност. Колона B и D трябва да бъдат сравнени и трябва да бъдат намерени с ненулеви стойности. И в същия случай, когато колона В също се намира отново (контур) (същото съдържание на клетка, но различен ред), Col D ще има нулева стойност (липсващо съдържание). Трябва да запълня тази колона D със същото съдържание като първия запис, съдържащ съдържание на Col B и D. В моя пример стойността е твърдо кодирана, не знам как иначе да го направя. Много съм изгубен и имам нужда от помощ, за да завърша това. Това е, което имам.

 Sub_MacroUser10 () Задаване I = работни листове ("Sheet2") Dim d Dim jd = 1 "брояч на цикъла j = 4" започнете от 4-ти ред, защото от заглавията Do Do ActiveCell (I.Range ("B" & j) = " Група потребителски портфейли ”) и ActiveCell (I.Range (" D "& j null)) 'цикъл Ако I.Range (" B "& j) =" User2010 "Тогава клетката е озаглавена User2010 ... и т.н. .Range ("D" & j) = "" Тогава се предполага, че това ще открие нулевите стойности в D d = d + 1 End, ако i.Rows (d) .Value = I.Rows (j) .Value End If j = j + 1 Sub Sub End 

Всичко на всичко. Трябва да потърся съдържанието в Cell B $ и да потърся съдържанието в Cell D $. Ще има един ред със съдържание в двете места. След това трябва да намерим всички други съответстващи редове, които съответстват на B $, които нямат никакви стойности в D $. Трябва да добавя тези липсващи стойности от ненулевия D $ към нулевия D $.

Решение

Ако случаят е винаги, че запълненият ред ще се появи преди празен, тогава можете да използвате речников обект. За това

  • Прекарайте първия ред до края
  • Ако двете клетки не са празни, комбинирайте стойността на B и D като ключ и стойността на C като стойност.
  • Когато минавате през редове, първо проверете дали този ключ е в речника, ако отговорът е да, имате стойност, добавена в речника

 'за да създадете dic обект Set dicMyDic = CreateObect ("Scripting.Dictionary")' това е начина, по който ключът може да бъде strKey = B1 & "|" & D1 'проверете дали стойността на D е празна или не', за да добавите стойността към dic IF Not (dicMyDic.Exists (strKey)), после dicMyDic.Add Key: = strKey, Item: = val 'за да получите стойността от dic IF (dicMyDic.Exists (strKey)), след това val = dicMyDic (strKey) 

Благодарение на rizvisa1 за този съвет.

Предишна Статия Следваща Статия

Топ Съвети