我终于找到了这个公式的解决方案:
=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
信息
此宏将 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)
您可以将公式更改为您想要的任何内容,例如,如果您想删除 A2 单元格值末尾的“w”字符,您可以像这样更改公式:
=IF(RIGHT(A2;1)="w";LEFT(A2;LEN(A2)-1);A2)