Excel / VBA – 如何在每N个字符的string中插入一个字符

我有一个报告,导出时,它显示单个单元格中的订单号码(总是7位数字)作为一个单一的string。 例如:订单1234567和9876543将在单个单元格中显示为12345679876543。 每个单元不存在最大数量的订单,每个单元都不相同。

有没有什么办法可以每7位数字添加一个字符,以便我可以对文本进行后续处理?

为了避免使用一个漫长而复杂的公式,我build议使用VBA。

将下面的代码粘贴到标准模块中,然后在工作表上使用这样的公式:

=InsertPipe(A1) 

 Function InsertPipe(s As String) Dim i As Long Dim result As String For i = 1 To Len(s) Step 7 On Error Resume Next result = result & Left(s, 7) & "|" s = Mid(s, 8, Len(s) - 7) Next i InsertPipe = Left(result, Len(result) - 1) End Function 

你可以使用CONCATENATE

例如,如果值在两个单元格中: =CONCATENATE(A1,",",B1)

Ex(如果数值在一个单元格中) =IF(LEN(A1)>7,CONCATENATE(LEFT(A1,7),",",MID(A1,8,100)))

编辑添加

你可以使用的VBA代码(刚才发现)

  Sub AddACharacter() Dim Rng As Range Dim InputRng As Range, OutRng As Range Dim Row As Integer Dim Char As String Dim Index As Integer Dim arr As Variant Dim Val As String Dim OutVal As String Dim Num As Integer xTitleId = "Add a character" Set InputRng = Application.Selection Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address,Type:=8) Row = Application.InputBox("Number of characters :", xTitleId, Type:=1) Char = Application.InputBox("Specify a character :", xTitleId, Type:=2) Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8) Set OutRng = OutRng.Range("A1") Num = 1 For Each Rng In InputRng Val = Rng.Value OutVal = "" For Index = 1 To VBA.Len(Val) If Index Mod Row = 0 And Index <> VBA.Len(Val) Then OutVal = OutVal + VBA.Mid(Val, Index, 1) + Char Else OutVal = OutVal + VBA.Mid(Val, Index, 1) End If Next OutRng.Cells(Num, 1).Value = OutVal Num = Num + 1 Next End Sub 

你可以使用一个复制的公式,但是在预期的分裂方面会是有限的,你可以沿着这些线使用一些东西,在我的例子中,在b1到z1中。

=MID($A1,IF(COLUMN()-2=0,1,((COLUMN()-2)*7)+1),7)

在这里输入图像说明

假设string在A2中,那么试试这个…在B2中

 =SUBSTITUTE(A2,LEFT(A2,7),LEFT(A2,7)&"|") 

上面的公式会插入一个“|” 七个字之后。