Попытка найти для al oop, который считывает номера счетов в столбце «E» в «Информационном листе», начиная с «E2», берет это число и вводит его в первую строку, содержащую пустую белую ячейку на Лист «Подтверждение» («E4») под разделом номера счета. Как только номер помещен туда, «длинное имя» (найденное в таблице в 200-й строке), связанное с номером счета в ячейке «E4», появляется в первой пустой белой ячейке («B4») под разделом имени учетной записи , Затем l oop продолжается и читает следующую ячейку ('E3') на «Листе ввода», и, если этот номер счета принадлежит тому же имени, поместите этот номер в следующую белую ячейку ('G4') на лист «Доказательство». Если номер учетной записи не связан с именем учетной записи в ячейке «B4», поместите его в следующую строку, содержащую пустую белую ячейку «E12», и назначьте соответствующее имя для этого номера в ячейке под именем учетной записи в ячейке «B12» и продолжайте вниз по списку в столбце «E» на информационном листе и повторяйте процесс до тех пор, пока не будут заполнены все номера счетов на первом листе, и все соответствующие номера счетов не будут находиться в строке с соответствующим «длинным именем» для этих номеров счетов. .
Как разместить все учетные записи, связанные с именем учетной записи, в одной строке в указанных c белых ячейках, не размещая их дважды в одной строке?
Это код, который у меня есть:
Sub loopything()
Dim infoSheet As Worksheet, proofSheet As Worksheet, refRange As Range, lastRow As Long, r As Long
Dim acct As String, foundAcct As Range, nextRow As Long
Set infoSheet = ThisWorkbook.Sheets("Info Sheet")
Set proofSheet = ThisWorkbook.Sheets("Proof")
With proofSheet
nextRow = 4 ' waiting to adjust to normal table format
End With
With proofSheet
Set refRange = .Range("A200:L79000")
End with
With InfoSheet
lastRow = 30 ' .cells(.rows.count, "E").end(xlup).row
For r = 2 To lastRow
acct = .Cells(r, "E")
Set foundAcct = refRange.Find(what:=acct)
longname = foundAcct.Offset(0, 1)
proofSheet.Cells(nextRow, "E") = acct
proofSheet.Cells(nextRow, "B") = longname
nextRow = nextRow + 8 ' would be nicer to just add one row (see first note)
Next r
End With
End Sub
Взгляните на фрагменты для справки.
Лист ввода информации
Лист подтверждения
Код в настоящее время делает это:
Посмотрите, как в примерах практики, которые, как предполагается, имитируют c На реальных листах имя появляется в нескольких строках с соответствующими номерами счетов, когда они должны появляться в одной строке под одним и тем же именем со всеми номерами счетов в одной строке.