Что нового

[Excel, VB] Вопрос по макросу (сравнение, заполнение ячеек)

inx

Знающий
Сообщения
43
Репутация
12
Есть две таблицы, нужно из второй заполнить соответствующие ячейки в первой.
(вообще они на разных листах и номера строк тоже разные, но не суть)

IDName IDName
K10012K10014Alice
K10014K10078Jack
K10078K10087Casey
K10087K10028Helen
K10028K10012Bob
K10012
K10014
K10078
K10087
K10014
K10012
K10012

Сделан макрос:
Код:
Public Sub test_sbr()

IDROW = 2
SIDROW = 2
ID = Worksheets("Лист1").Cells(IDROW, 6)
1:
SID = Worksheets("Лист1").Cells(SIDROW, 1)
If SID = 0 Or SID = "" Or SID = " " Then Exit Sub

Do While ID <> ""
If SID = ID Then
  Worksheets("Лист1").Cells(SIDROW, 2) = Worksheets("Лист1").Cells(IDROW, 7)
End If
 IDROW = IDROW + 1
 ID = Worksheets("Лист1").Cells(IDROW, 6)
Loop
SIDROW = SIDROW + 1
GoTo 1
End Sub

Но он почему-то находит только "K10012 Bob", заполняет сответствующую одну ячейку и все.
Что сделано не так?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
:rofl:
Никогда в жизни не видел VB (это к вопросу имеет ли значение знание синтаксиса какого-либо языка),
но тут очевидно что строку
Код:
IDROW = 2

нужно сдвинуть ниже метки
Код:
1:
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
inx
Накрутили вы непонятно чего. И кстати: данные ведь у вас находятся на разных листах, почему в вашем макросе упоминается лишь один?

Код:
Public Sub test_sbr()
	Dim Idx As Integer, Idx2 As Integer, ID As String
	
	Set dIn = Worksheets("Лист1").Range("F6").CurrentRegion
	Set dFrom = Worksheets("Лист2").Range("F6").CurrentRegion

	For Idx = 1 To dFrom.Rows.Count Step 1
		ID = dFrom.Cells(Idx,1)
		For Idx2 = 1 To dIn.Rows.Count Step 1
			If ID = dIn.Cells(Idx2,1) Then
				dIn.Cells(Idx2,2) = dFrom.Cells(Idx,2) 
				Exit For
			End If
		Next Idx2
	Next Idx
End Sub
 
Верх