我正在复制基于HTML的内容并将其粘贴到电子表格中。我需要在会计凭证中为多行重复此过程。由于复制的字符串的值或长度发生变化且空格不均匀,我认为使用LEFT
,RIGHT
或MID
函数不会起作用。
虽然源内容在HTML中以六个相邻的水平单元格/列显示为表格,但Excel将其视为unicode并将其粘贴到一个单元格中(请注意,列空间不均匀;显示的所有内容都在一个单元格中作为文本):
Revenues 111,234 222,345 333,456 444,567 555,678
Revenues 666,789 777,890 888,901 999,012 1,111,234
它应该像这样粘贴(使用制表符作为分隔符):
Revenues 111,234 222,345 333,456 444,567 555,678
Revenues 666,789 777,890 888,901 999,012 1,111,234
我已尝试过每种粘贴特殊格式,但都没有效果。我还尝试录制一个宏,它从单元格中剪切五个数值,并根据需要将它们分别粘贴到相邻的列中。
以下是录制的宏:
Sub Copy_Cell_Part_and_Paste_In_Adjacent_Cells()
'
' Copy_Cell_Part_and_Paste_In_Adjacent_Cells Macro
'
' Keyboard Shortcut: Ctrl+u
'
ActiveCell.FormulaR1C1 = "Revenues "
Range("B1").Select
ActiveSheet.Paste
ActiveCell.FormulaR1C1 = "111,234"
Range("C1").Select
ActiveSheet.Paste
ActiveCell.FormulaR1C1 = "222,345"
Range("D1").Select
ActiveSheet.Paste
ActiveCell.FormulaR1C1 = "333,456"
Range("E1").Select
ActiveSheet.Paste
ActiveCell.FormulaR1C1 = "444,567"
Range("F1").Select
ActiveSheet.Paste
End Sub
是的,宏有许多问题,包括使用绝对值而不是相对引用,并将原始单元格内容复制到右边的第五个单元格。
如何剪切(不复制)单元格中字符串的数值部分并将剪切值粘贴到相邻单元格中?如果问题需要更具体:(1)如何使用相对参考自动切割任何选定单元格的一部分? (2)如何将这些切割细胞的内容分发到相邻细胞?
编辑:更改为澄清数组应该是选定的单元格,可能在一列中的多行中
答案 0 :(得分:2)
假设您在单元格A1中有源文本,您可以尝试:
Dim myArr as Variant
myArr = Split(WorksheetFunction.Trim(Range("A1"))
Range("B1").Resize(,Ubound(myArr) - LBound(myArr) + 1).Value = myArr
或者这个
Range("A1").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, ConsecutiveDelimiter:=True, Space:=True
答案 1 :(得分:1)
你可以使用正则表达式,它是一个更强大的字符串模式匹配,可以跨不同的单元格分割你的字符串。试试这段代码:
Sub PasteInCells()
Dim regex As Object: Set regex = CreateObject("VBScript.RegExp")
Dim match As Object
regex.Global = False
regex.Pattern = "(\w+)\s+([\d,]+)\s+([\d,]+)\s+([\d,]+)\s+([\d,]+)\s+([\d,]+)"
Dim strClip As String
strClip = InputBox("Paste data you want to split", "Paste in Cells")
Debug.Print strClip
Set match = regex.Execute(strClip)
If match.Count <> 0 Then
For i = 0 To match(0).submatches.Count - 1
Debug.Print match(0).submatches(i)
ActiveCell.Offset(0, i).Value = match(0).submatches(i)
Next
Else
MsgBox "Pasted values do not match pattern!", vbCritical
End If
End Sub
要使用它: