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

时间:2013-06-26 00:29:34

标签: excel excel-2010

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

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

2 个答案:

答案 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