我有4列(c,d,e,& f),我试图将它们合并到列a中。有时只填写2列,而其他四列都有数据。我的主要问题是我想要进入 A 列的内容不能超过200个字符。如果是这样,我需要将其余部分放入 B 列中。如果它超过200个字符,我需要它回拨到; 的最后一个实例。可以在Excel中完成吗?
这些字段中包含我公司数据库的电子邮件地址。
答案 0 :(得分:2)
这样的东西?
编辑:处理';'字符。它不完全是200,但在大多数情况下应该让你接近。
A1公式:
=IF(LEN(CONCATENATE(C1,D1,E1,F1))>200,LEFT(CONCATENATE(C1,D1,E1,F1),FIND(";",CONCATENATE(C1,D1,E1,F1),170)),CONCATENATE(C1,D1,E1,F1))
B1公式:
=IF(LEN(CONCATENATE(C1,D1,E1,F1))>200,MID(CONCATENATE(C1,D1,E1,F1),FIND(";",CONCATENATE(C1,D1,E1,F1),170)+1,LEN(CONCATENATE(C1,D1,E1,F1))),"")
复制
答案 1 :(得分:2)
您可以尝试joseph4tw的答案..或者您可以试试这个VBA
Sub ConcatAddr()
Dim s As String
Dim n, x, x2 As Integer
For x = 1 To 10 '--> you can change this
'concat all first
s = Cells(x, 3) & _
IIf(Not IsEmpty(Cells(x, 4)), ";" & Cells(x, 4), "") & _
IIf(Not IsEmpty(Cells(x, 5)), ";" & Cells(x, 5), "") & _
IIf(Not IsEmpty(Cells(x, 6)), ";" & Cells(x, 6), "")
If Len(s) > 200 Then
For x2 = 200 To 1 Step -1
If Mid(s, x2, 1) = ";" Then
Cells(x, 1) = Mid(s, 1, x2 - 1)
Cells(x, 2) = Mid(s, x2 + 1)
Exit For
End If
Next
Else
If Len(Trim(Replace(s, ";", ""))) > 0 Then
Cells(x, 1) = s
End If
End If
Next
End Sub