我试图根据条件粘贴单元格内容,如果没有匹配则复制单元格的第一个单词并将其粘贴到右边的下一个单元格,但它给了我对象未定义的错误。
CENTRUM ADVANCE TABLET应仅复制CENTRUM
以下是我的代码
Sub splitUpRegexPattern()
Dim re As Object, c As Range
Dim allMatches
Dim cell As Object
Dim count As Integer
count = 0
For Each cell In Selection
count = count + 1
Next cell
' MsgBox count & " item(s) selected"
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "((\d+(?:\.\d+)?)\s*(m?g|mcg|ml|IU|MIU|mgs|µg|gm|microg|microgram)\b)"
re.IgnoreCase = True
re.Global = True
For Each c In ActiveSheet.Range("D2", ActiveSheet.Range("D2").End(xlDown)).Cells ' Select the range and run the code
Set allMatches = re.Execute(c.Value)
If allMatches.count > 0 Then
c.Offset(0, 1).Value = allMatches(0)
Else
Selection.Copy
c.Offset(0, 1).Value.Paste
End If
Next c
End Sub
答案 0 :(得分:1)
我认为你需要做出一些改变:
c.Copy
c.Offset(0, 1).PasteSpecial
没有值的粘贴属性。 c是一个范围,因此它具有复制和粘贴方法。
对于您的其他问题:
Dim LArray() As String
LArray = Split(c.Text, " ")
c.Offset(0, 1).Item(1, 1).Value = LArray(0)
答案 1 :(得分:1)
使用拆分功能,示例
Z.succ
<强>
Set allMatches = re.Execute(c.Value) If allMatches.count > 0 Then c.Offset(0, 1).Value = allMatches(0) Else c.Offset(0, 1).Value = Split(c.Value, " ")(0) End If
强>
Split (text_string, delimiter, limit, compare)
text_string:
。
C.Value
分隔符是空格字符(&#34;&#34;)。
delimiter:
将limit:
参数留空,因为我们需要将limit
中的所有字词分开。
C.Value
这将为空白,因为空白指定二进制比较方法。
答案 2 :(得分:0)
尝试这样的事情
Else
Selection.Copy
Selection.Offset(1, 0).Select
ActiveSheet.Paste
End If