如果在Excel中使用Len和其他一些时髦代码声明

我有4列(c,d,e,&f),我正在尝试将其合并到列a中。 有时只填写2列,其他时间全部填写数据。 我的主要问题是,我想进入列A不能超过200个字符。 如果是这样的话,我需要将其余部分放入B列。 如果它超过200个字符,我需要它回拨到最后一个实例; 。 这可以在Excel中完成吗?

这些字段中有我的公司数据库的电子邮件地址。

像这样的东西?

编辑:处理';' 字符。 这不是完全在200,但应该让你在大多数情况下closures。

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))),"") 

复制下来

你可以试试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