Excel - Порівняти стовпець A & B дає результати у стовпці C

Проблема

У стовпці A & B у мене є дані, які містять до 55000 колонок, іноді лише 144 стовпців, що виглядає так:

 AB (результат C) 2 ZZ, A, Q 3 PP, V 4 WW 2 A - 2 Q - 3 V - 1 DD 

Тут спочатку шукайте col: A перше число - "2", а в колонці: B - "Z", "A" & "Q", тому результат Z, A, Q є одним з найважливіших речей. решта "2" у стовпці: А повинно відображатися порожнім.

Рішення 1

Це перший макрос, який можна використовувати:

 Sub test () Dim accountName, lastRow, writeInCell, repeatTimes lastRow = Діапазон ("B1"). End (xlDown) .Row Sheets (1) .Виберіть Для i = 2 Для lastRow writeInCell = i Діапазон ("B" & i) .Select accountName = Діапазон ("B" & i) .Value If (Діапазон ("C" & i) .Value "") Потім repeatTimes = CInt (Діапазон ("C" & i) .Value) Закінчити, якщо повторитиTimes> 1 Тоді accountName = WorksheetFunction.Rept (accountName & ", ", repeatTimes) End Якщо j = i + 1 accountName = Trim (accountName) If (Право (accountName, 1) = ", ") Тоді accountName = Left (accountName, Len) (accountName) - 1) Кінець Якщо If (i lastRow) Тоді До У ActiveCell.Offset (1, -1) .Value repeatTimes = 0 If (Діапазон ("C" & j) .Value "") Потім repeatTimes = CInt (діапазон ("C" & j) .Value) End If If repeatTimes> 0 Тоді accountName = Trim (accountName) If (Право (accountName, 1) = ", ") Тоді accountName = accountName & WorksheetFunction.Rept (Діапазон ( "B" & j) .Value & ", ", repeatTimes) Інакше accountName = accountName & ", " & WorksheetFunction.Rept (діапазон ("B" & j) .Value & ", ", repeatTimes) Закінчити, якщо закінчити, якщо Ac tiveCell.Offset (1, 0) .Select i = i + 1 j = i + 1 Loop End Якщо accountName = Trim (accountName) If (Право (accountName, 1) = ", ") Тоді accountName = Left (назва облікового запису, Len (accountName) - 1) End Якщо accountName = Замінити (accountName, ", ", ", ") Діапазон ("D" & writeInCell) .Value = accountName accountName = "" повторітьTimes = 0 Далі i Range ("A1"). Виберіть End Sub 

Рішення 2

Інший макрос:

 Sub test () Dim accountName, lastRow, writeInCell lastRow = Діапазон ("B1"). End (xlDown) .Row Sheets (1) .Select For i = 2 До lastRow writeInCell = i accountName = Діапазон ("B" & i) Діапазон значень ("B" & i) .Виберіть Якщо (i lastRow) Тоді Увімкніть, доки ActiveCell.Offset (1, -1) .Value "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Значення ActiveCell.Offset (1, 0) .Select i = i + 1 End End Якщо діапазон ("C" & writeInCell) .Value = accountName Next i End Sub 

Рішення 3

  • 1. Створіть папку на диску для легкого доступу, наприклад C :. (Назвіть його щось, що стосується Панелі керування, наприклад Користувачі.)
  • 2. Створіть новий файл у Блокноті та скопіюйте та вставте в нього наступне:

 Користувачі, які користуються юзерами. {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. Замініть "Користувачі" на назву створеної папки та збережіть файл як loc.bat.

(Тепер ви повинні мати можливість бачити вашу папку і файл loc.bat, з loc.bat в тому ж каталозі, що й папка Не в ній.)

  • 4. Тепер клацніть правою кнопкою миші та створіть інший текстовий файл. Скопіюйте та вставте в нього наступне:

 Користувачі ren. {21EC2020-3AEA-1069-A2DD-08002B30309D} Користувачі 

(Не забудьте замінити слово "Користувачі" на назву папки.)

  • 5. Збережіть його як key.bat.
  • 6. Тепер ви повинні побачити файли loc.bat і key.bat в тому ж каталозі, що й створена папка.
  • 7. Тепер все, що вам потрібно зробити, це двічі клацнути на файлі loc.bat, а папка повинна мати піктограму, що виглядає як панель керування. Якщо натиснути на папку, вона повинна перенаправити вас на Панель керування і таким чином ви заблокували папку.
  • 8. Звичайно, щоб розблокувати його, просто двічі клацніть по файлу key.bat, і папка повинна повернутись назад до теки, яку ви вперше створили.

Примітка

Завдяки Navaneeth за цей відгук на форумі.

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

Кращі Поради