2014-01-16 109 views
0

我需要一個vba宏合併單元格中的逗號分隔的單元格到一個新單元格中,並忽略空白單元格,因爲有時我會得到例如。圖像1,圖像2,圖像3 ,,,,,VBA宏合併單元格,用逗號分隔,忽略空單元格

下面有一個例子:
|           IMAGE_1           |           IMAGE_2           |                     MERGED_IMAGES                         |
|     myimage1.jpg     |     myimage2.jpg     |     myimage1.jpg,myimage2.jpg             |
| myimage1_b.jpg | myimage2_b.jpg | myimage1_b.jpg,myimage2_b.jpg |
| myimage1_c.jpg | myimage2_c.jpg |   myimage1_c.jpg,myimage2_c.jpg |

回答

0

最後我發現這個公式的解決方案:

=IF(A1=0;"";A1&",") & IF(B1=0;"";B1&",") & IF(C1=0;"";C1) 

確定這是新的宏的作品:

Columns("AD:AD").Select 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 

Range("AD2").Select 
ActiveCell.FormulaR1C1 = _ 
    "=IF(RC[-10]=0,"""",RC[-10]&"","") & IF(RC[-9]=0,"""",RC[-9]&"","") & IF(RC[-8]=0,"""",RC[-8]&"","") & IF(RC[-7]=0,"""",RC[-7]&"","") & IF(RC[-6]=0,"""",RC[-6]&"","") & IF(RC[-5]=0,"""",RC[-5]&"","") & IF(RC[-4]=0,"""",RC[-4]&"","") & IF(RC[-3]=0,"""",RC[-3]&"","") & IF(RC[-2]=0,"""",RC[-2]&"","") & IF(RC[-1]=0,"""",RC[-1])" 
Selection.AutoFill Destination:=Range("AD2:AD" & Range("A" & Rows.Count).End(xlUp).Row), Type:=xlFillDefault 
Range("AD2:AD" & Range("A" & Rows.Count).End(xlUp).Row).Select 

Selection.Copy 
Range("AE2").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Application.CutCopyMode = False 

Range("AD:AD,AC:AC,AB:AB,AA:AA,Z:Z,Y:Y,X:X,W:W,V:V,U:U,T:T").Select 
Selection.Delete Shift:=xlToLeft 

信息

這臺Mac ro將列T,U,V,W,X,Y,Z,AA,AB,AC合併到AD列中,並用逗號分隔值並忽略空白單元格。之後,它將結果複製到AE列中,並刪除不必要的列。所以,當宏完全執行你把所有這列合併入T列

這裏有一個例子:
|           IMAGE_1           |           IMAGE_2           |                     MERGED_IMAGES                         |
|     myimage1.jpg     |     myimage2.jpg     |     myimage1.jpg,myimage2.jpg             |
| myimage1_b.jpg | myimage2_b.jpg | myimage1_b.jpg,myimage2_b.jpg |
| myimage1_c.jpg | myimage2_c.jpg |   myimage1_c.jpg,myimage2_c.jpg |

PS !!!
我發現了第二個問題,宏執行後,我發現在單元格值的末尾有一些不需要的逗號的單元格。 所以我要創建一個第二個宏來解決與宏錄製這一問題,這個公式

=IF(RIGHT(J2;1)=",";LEFT(J2;LEN(J2)-1);J2) 

,如果你想刪除的的字母「W」可以更改配方,任何你想要的,如A2單元格的值的末尾,你可以像這樣改變這個單元格:

=IF(RIGHT(A2;1)="w";LEFT(A2;LEN(A2)-1);A2)