[英]Excel/VBA - How to insert a character in a string every N characters
我有一個報告,它在導出時會在一個單元格中顯示一個單個字符串的訂單號(總是7位長)。 例如:訂單1234567和9876543將在單個單元格中顯示為12345679876543。 每個單元格沒有最大訂單數,每個單元格都有所不同。
有沒有什么方法可以每7位數添加一個字符,以便我可以在之后為列做文本?
為了避免使用冗長而復雜的公式,我建議使用VBA。
將下面的代碼粘貼到標准模塊中,然后您可以在工作表上使用這樣的公式:
=InsertPipe(A1,7)
Function InsertPipe(s As String, interval As Long)
If interval < 1 Then Exit Function
Dim i As Long, result As String
For i = 1 To Len(s) Step interval
On Error Resume Next
result = result & Left(s, interval) & "|"
s = Mid(s, interval + 1, Len(s) - interval)
Next i
InsertPipe = Left(result, Len(result) - 1)
End Function
你可以使用CONCATENATE
。
如果值在兩個單元格中,則為Ex: =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
假設字符串在A2中,那么嘗試這個......在B2中
=SUBSTITUTE(A2,LEFT(A2,7),LEFT(A2,7)&"|")
上面的公式將插入一個“|” 七個字后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.