我有一张包含数据行的工作表。
NOM(LSL,USL)=207.3980(206.1990,208.5970) NOM(LSL,USL)=207.3980(206.1990,208.5970) NOM(LSL,USL)=18.8200(18.4400,19.2100)
我想抓住值并将它们放在像
这样的单元格中207.3980 207.3980 18.8200
206.1990 206.1990 18.4400
208.5970 208.5970 19.2100
我继续收到“ByRef Argument Mismatch”错误。我相信我是如何定义参考单元的。
Sub Parse_Replace()
Dim i As Double
Dim ws As Worksheet
Set ws = ThisWorkbook.ActiveSheet
Dim Col As Range
Dim rLastCell As Range
Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
For i = rLastCell.Column To 1 Step -1
Col = ColLett(rLastCell.Column)
Columns(i).Cells(4) = SplitString(Col3, ",", 4)
Columns(i).Cells(5) = SplitString(Col3, ",", 5)
Columns(i).Cells(6) = SplitString(Col3, ",", 6)
Next i
End Sub
Function ColLett(Col As Integer) As String
If Col > 26 Then
ColLett = ColLett((Col - (Col Mod 26)) / 26) + Chr(Col Mod 26 + 64)
Else
ColLett = Chr(Col + 64)
End If
End Function
Function SplitString(pValue As String, pChar As String, pIndex As Integer) As Variant
Dim YString As Variant
YString = Replace(Replace(Replace(Replace(pValue, " ", ""), "=", ""), "(", ","), ")", ",")
SplitString = Split(YString, pChar)(pIndex - 1)
End Function
过程
遍历每一列
使用ColLett
使用SplitString
循环
谢谢
编辑:用inteded替换SplitString
值。
答案 0 :(得分:1)
您在此处声明Col
为范围:
Dim Col As Range
然后尝试将Col
设置为字符串:
Col = ColLett(rLastCell.Column)
设置范围时,必须将其设置为范围。此外,您必须使用SET
关键字执行此操作:
Set Col = <a range>
当您设置Col
时,只需在rLastCell.Column
的每个循环中重复设置For
。如果您只需要最后一列的列字母,那么在输入for循环之前执行此操作。
无论如何,所有这一切都毫无意义。在任何时候,您都不会使用在函数中检索故障的列号。实际上,对于你正在做的事情,你不需要专栏信。专栏信件适用于人类;列号是VBA中最重要的。