Я задал связанный вопрос здесь.
Сэр Аделаида предоставила мне это очень полезное решение.
Так что теперь, в этом почти аналогичном случае, у меня есть 2 листа Excel в моей книге.
[Xsheet] [1] Sheet1
Я собираюсь перебрать столбец имени и описания в Sheet1, чтобы увидеть, совпадает ли он со значением в столбце имени или описания в XSheet (в столбце могут быть бесконечные строки данных). Если они это сделают, то «эта» строка в Sheet1 будет скопирована в новый Sheet2.
Я немного изменил предыдущее кодирование (предоставленное сэром Аделаидой),
Sub Procedure2()
Dim xsht As Worksheet
Dim sht As Worksheet 'original sheet
Dim newsht As Worksheet 'sheet with new data
Set xsht = ThisWorkbook.Worksheets("Xsheet")
Set sht = ThisWorkbook.Worksheets("Sheet1")
Set newsht = ThisWorkbook.Worksheets("Sheet2")
'Set dat = sht.Range("code").Cells(1,1)
Set main = xsht.Range("A1")
Set dat = sht.Range("A1")
Set newdat = newsht.Range("A1")
'initialise counters
i = 1
j = 1
'set heading on sheet2
newdat.Offset(0, 0).Value = dat.Offset(0, 0).Value 'copy code
newdat.Offset(0, 1).Value = dat.Offset(0, 2).Value 'copy title
newdat.Offset(0, 2).Value = dat.Offset(0, 3).Value 'copy date
newdat.Offset(0, 3).Value = dat.Offset(0, 4).Value 'copy name
newdat.Offset(0, 4).Value = dat.Offset(0, 5).Value 'copy descr
newdat.Offset(0, 5).Value = dat.Offset(0, 6).Value 'copy status
Do While dat.Offset(i, 0).Value <> "" 'loop row till code data goes blank
If ((main.Offset(i, 0).Value = dat.Offset(i, 4).Value Or _
main.Offset(i, 1).Value = dat.Offset(i, 5).Value) And dat.Offset(i, 6).Value = "active") Then 'check conditions
newdat.Offset(j, 0).Value = dat.Offset(i, 0).Value 'copy code
newdat.Offset(j, 1).Value = dat.Offset(i, 2).Value 'copy title
newdat.Offset(j, 2).Value = dat.Offset(i, 3).Value 'copy date
newdat.Offset(j, 3).Value = dat.Offset(i, 4).Value 'copy name
newdat.Offset(j, 4).Value = dat.Offset(i, 5).Value 'copy descr
newdat.Offset(j, 5).Value = dat.Offset(i, 6).Value 'copy status
j = j + 1
End If
i = i + 1
Loop
Любой предоставленный совет будет оценен. Спасибо.
выходной Привет, я попытался запустить обновленный код.
Это мой вывод, но есть неактивный случай, который не является правильным.
Правильный вывод должен быть 4566,4987,4988.
Я прошел через код, Идк, что пошло не так
Я забираю ссылку на Xsheet, потому что у меня недостаточно репутации, чтобы создать более 2 гиперссылок
Теперь я перебираю Sheet1, чтобы посмотреть, соответствуют ли он столбцам в Xsheet.
4566, он соответствует 'Adam' в имени col (так как его имя или описание, поэтому, если имя совпадает, то это совпадение), и (должен быть) активным, так что его в.
4899, Эдвард соответствует (или какому-либо описанию), но не соответствует и активен, поэтому нет.
4987, тот же случай, что и 4566, его Адам и активный.
4988, Крис (не совпадает с именем), но al в описании Xsheet и активен, поэтому он в.
4989, Крис не соответствует имени, ttr не соответствует описанию, даже его активный случай (я также не буду принимать его)
Спасибо за ваше руководство до сих пор. Я очень ценю это.