Excel - копію макросів на клітинку на основі певних критеріїв

Проблема

Я застряг. Я сподіваюся, що хтось може допомогти мені сьогодні. У мене є електронна таблиця Excel з 1400 рядками. Перші 3 рядки не мають значення (заголовки). У мене є 3 клітини з $ tring контентом (B: C: D). Що мені потрібно зробити, це створити макрос, який може конкретно подивитися в стовпці B і D у стовпці D для ненульових значень. У цій електронній таблиці є декілька комірок, які повинні мати однакове значення. Стовпчик B і D слід порівнювати, і їх слід знайти з ненульовими значеннями. І в тому ж самому випадку, де стовпець B також знайдений знову (петля) (той же вміст комірки, але різний рядок) Col D буде мати нульове значення (відсутній вміст). Мені потрібно заповнити цей Col D з тим же вмістом, що і перший запис, який мав вміст Col B і D. У моєму прикладі значення жорстко закодовано, я не знаю, як ще це зробити. Я дуже загублений, і мені потрібна допомога, щоб завершити це. Це те, що я маю.

 Sub _MacroUser10 () Встановити I = робочі листи ("Sheet2") Дим d Dim jd = 1 "counter counter 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 Ключ: = strKey, Item: = val ', щоб отримати значення з dic IF (dicMyDic.Exists (strKey)), потім val = dicMyDic (strKey) 

Завдяки rizvisa1 для цього чайові.

Попередня Стаття Наступна Стаття

Кращі Поради