我有一个报告,在导出时,它会将单个单元格中的订单号(总是7位长)显示为一个单独的字符串。例如:订单1234567和9876543将在单个单元格中显示为12345679876543。每个单元格没有最大订单数,每个单元格都有所不同。
有没有什么方法可以每7位数添加一个字符,以便我可以在之后对列进行文本处理?
答案 0 :(得分:4)
为避免使用冗长而复杂的公式,我建议使用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
答案 1 :(得分:1)
您可以使用CONCATENATE
。
如果值位于两个单元格中,则为例外:=CONCATENATE(A1,",",B1)
如果值位于一个单元格=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
答案 2 :(得分:1)
你可以使用一个被复制的公式,但是对于预期的分割是有限的,你可以在这些行中使用某些东西,在我的例子中是b1到z1。
[ANCESTOR IDS].ForEach(o => query = query.Filter(x => ((IContent)x).Ancestors().Match(o.ToString())));
答案 3 :(得分:0)
假设字符串在A2中,那么试试这个...... 在B2
=SUBSTITUTE(A2,LEFT(A2,7),LEFT(A2,7)&"|")
以上公式将插入&#34; |&#34;七个字后。