Я пытаюсь создать строку с использованием VBA, которая включает все видимые значения после фильтрации в ячейках B8-B1129, разделенных точкой с запятой. Может ли кто-нибудь помочь мне в этом?Добавление нескольких значений из отфильтрованного списка в строку, которая затем будет использоваться для создания списка адресов электронной почты
-3
A
ответ
0
Если фильтр уже применяется, вы можете использовать следующий код (результат сохраняется в ячейке C2
):
Sub test()
Dim rng As Range
Dim res As String
Dim c As Range
On Error Resume Next
'change "Sheet1" to your cheet name'
With ThisWorkbook.Sheets("Sheet1")
Set rng = .Range("B8:B1129").Rows.SpecialCells(xlCellTypeVisible)
For Each c In rng
If Not ISEmpty(c) Then res = res & c.Value & ", "
Next
res = Left(res, Len(res) - 2)
.Range("C2") = res
End With
End Sub
или вы можете применить автофильтра непосредственно из VBA:
Sub test()
Dim rng As Range
Dim res As String
Dim c As Range
On Error Resume Next
'change "Sheet1" to your cheet name'
With ThisWorkbook.Sheets("Sheet1")
.AutoFilterMode = False
.Range("B1").AutoFilter Field:=1, Criteria1:="=*searchText*"
Set rng = .Range("B8:B1129").Rows.SpecialCells(xlCellTypeVisible)
For Each c In rng
If Not ISEmpty(c) Then res = res & c.Value & ", "
Next
res = Left(res, Len(res) - 2)
.Range("C2") = res
End With
End Sub
У вас пытался какой-то код? –
Ознакомьтесь с http://stackoverflow.com/questions/8934184/excel-vba-build-a-comma-delimited-string, 's = join (Application.WorksheetFunction.Transpose ([b8: b41129]),"; ") ' – Blackhawk
... или любые другие попытки/исследования (VBA не требуется для создания такой строки)? – pnuts