根据格式在Excel单元格中分隔文本

我想根据单元格内容的格式将一个单元格中的文本分成2个单元格。 在下面的图片中:我想分开蓝色的电子邮件地址的文字。 任何人都可以build议一个Excel公式或解决方法来做到这一点?

在这里输入图像说明

我find了一种方法,但是我不知道你的字体颜色代码,所以在我的例子中我使用红色。 你需要弄清楚单元格中的字体颜色。

使用MsgBox ActiveCell.Characters(Start:=1, Length:=1).Font.Color获取ActiveCell第一个字符的代码。

它的工作方式是一次检查string1中的每个字符。 如果这个字符是红色的,那么它会给cvariables添加一个数字。 最后,我拿走了左边的c个字符。

 Sub test1() Dim i As Integer Dim c As Integer Dim l As Integer While ActiveCell.Value <> "" i = 1 c = 0 l = Len(ActiveCell.Value) While i <= l If ActiveCell.Characters(Start:=1, Length:=i).Font.Color = 255 Then c = c + 1 i = i + 1 Else i = i + 1 End If Wend ActiveCell.Offset(0, 1).Value = Left(ActiveCell.Value, c) ActiveCell.Offset(0, 2).Value = Right(ActiveCell.Value, l - c) ActiveCell.Offset(1, 0).Select Wend End Sub 

结果如下:

在这里输入图像说明

  1. 按Alt + F 11打开Microsoft Visual Basic for Applications窗口

  2. 通过以下代码:

     Function GetBoldString(workCell As Range) strLen = Len(workCell) GetBoldString = "" For i = 1 To strLen If workCell.Characters(i, 1).Font.Bold Then GetBoldString = GetBoldString & workCell.Characters(i, 1).Text End If Next i End Function Function GetNoBoldString(workCell As Range) strLen = Len(workCell) GetNoBoldString = "" For i = 1 To strLen If workCell.Characters(i, 1).Font.Bold = False Then GetNoBoldString = GetNoBoldString & workCell.Characters(i, 1).Text End If Next i End Function 
  3. 返回到电子表格。
    在你想要粗体部分粘贴的单元格中:

    = GetBoldString(A1)

  4. 在你想不加粗的部分粘贴的单元格中:

    = GetNoBoldString(A1)

将A1replace为要分割的单元格的引用。

处理workCell.Characters(i,1)的属性,可以通过其他格式属性(如颜色)进行拆分。

以下是两个VBA函数,用于将黑色部分与黑色部分区分开来。

 Function GetColorString(workCell As Range) strLen = Len(workCell) GetColorString = "" For i = 1 To strLen If workCell.Characters(i, 1).Font.Color <> vbBlack Then GetColorString = GetColorString & workCell.Characters(i, 1).Text End If Next i End Function Function GetBlackString(workCell As Range) strLen = Len(workCell) GetBlackString = "" For i = 1 To strLen If workCell.Characters(i, 1).Font.Color = vbBlack Then GetBlackString = GetBlackString & workCell.Characters(i, 1).Text End If Next i End Function 

这是使用这个VBA函数的结果:

问候

是否可以用另一个分号分隔另一个蓝色文本? 因为那么你可以拆分包含单元格的string: StrArray = Split(CellXY.Value, ";") strArray是一个string数组,它获得了两个元素“Arnald,Biarb”和“dfgh.sukusi@drems。 COM”。 那么你只需要说哪个单元格应该得到哪个值。 作为示例: CellXY.Value = strArray(0)