我有一个报告说出口时,它在为一个单一字符串的单个单元格显示订单号(谁是永远的7位长)。例如:订单1234567和9876543将在单个单元格中显示为12345679876543。每个单元不存在最大数量的订单,它在每个单元上都不相同。的Excel/VBA - 如何在一个字符串插入字符每N个字符
有什么办法,我可以添加一个字符,每7位,这样我可以做一个文本列之后?
我有一个报告说出口时,它在为一个单一字符串的单个单元格显示订单号(谁是永远的7位长)。例如:订单1234567和9876543将在单个单元格中显示为12345679876543。每个单元不存在最大数量的订单,它在每个单元上都不相同。的Excel/VBA - 如何在一个字符串插入字符每N个字符
有什么办法,我可以添加一个字符,每7位,这样我可以做一个文本列之后?
要避免使用长且复杂的公式,我建议使用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)
防爆如果值是一个细胞=IF(LEN(A1)>7,CONCATENATE(LEFT(A1,7),",",MID(A1,8,100)))
编辑ADD
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
这真棒,非常感谢,它效果很好! – Jonorl