我想要收集一些列,在它们之间必须有这个。 “\” 问题是不同的行具有不同的列数。例如:
A B C
1 Image1.jpg Image2.jpg Image3.jpg
2 Image1.jpg Image2.jpg
3 Image1.jpg
如果我连接三列,则第三列将显示为Image1.jpg;\;\
是否可以选择在列不为空的情况下使用CONCATENATE列?
答案 0 :(得分:1)
也许:
=IF(B1="",A1,IF(C1="",A1&";\"&B1,A1&";\"&B1&";\"&C1))
如果你有很多列,你最好的选择可能是在第一次结束时接受剩余,并分别将其修剪掉。
一次最多10个(没有干预空白),但分两步:
=A1&";\"&B1&";\"&C1&";\"&D1&";\"&E1&";\"&F1&";\"&G1&";\"&H1&";\"&I1&";\ "&J1&";\"
在说K1并向下复制以适应,然后选择ColumnK,Copy,Paste Special,Values over the top。=LEFT(K1,LEN(K1)-2*(COUNTBLANK(A1:J1)+1))
并将其复制到适合的地方。答案 1 :(得分:1)
我假设包含数据的列是A,B和C.
在D栏中添加以下公式:
=IF(A1="",IF(B1="","",B1),IF(B1="",A1,A1&";\"&B1))
在E栏中添加以下公式以获得最终结果:
=IF(D1="",IF(C1="","",C1),IF(C1="",D1,D1&";\"&C1))
一次性公式:
=IF(IF(A1="",IF(B1="","",B1),IF(B1="",A1,A1&";\"&B1))="",IF(C1="","",C1),IF(C1="",IF(A1="",IF(B1="","",B1),IF(B1="",A1,A1&";\"&B1)),IF(A1="",IF(B1="","",B1),IF(B1="",A1,A1&";\"&B1))&";\"&C1))
我们正在处理8个可能的值组合,这些值是空白或不是三列(2到3的幂)。上述IF语句反映了这种逻辑。我个人会写一个VBA函数,而不是使用这么长的公式。
答案 2 :(得分:1)
这是一个基于 VBA 的解决方案。在标准模块中输入以下 UDF :
Option Explicit
Public Function Konkatenate(rIn As Range) As String
Dim r As Range, s As String
For Each r In rIn
s = r.Text
If s <> "" Then
Konkatenate = Konkatenate & ";\" & s
End If
Next r
Konkatenate = Mid(Konkatenate, 3)
End Function
用户定义函数(UDF)非常易于安装和使用:
如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除UDF:
从Excel使用UDF:
= Konkatenate(A1:Z1)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关UDF的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其生效!