2014-01-14 1 views
-3

세미콜론으로 구분 된 셀 B8에서 B1129로 필터링 된 후 모든 보이는 값을 포함하는 VBA를 사용하여 문자열을 만들려고합니다. 아무도 이걸 도와 줄 수 있니?필터링 된 목록에서 여러 값을 전자 메일 목록을 만드는 데 사용되는 문자열에 추가

+4

당신을 가지고 어떤 종류의 코드를 시도 했습니까? –

+0

체크 아웃 http://stackoverflow.com/questions/8934184/excel-vba-build-a-comma-delimited-string,'s = join (Application.WorksheetFunction.Transpose ([b8 : b41129]), ";") ' – Blackhawk

+0

... 또는 다른 시도/연구 (VBA는 이러한 문자열을 만들 필요가 없습니다)? – pnuts

답변

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 
관련 문제