我本周早些时候委托了一段代码(让专家写的比我花费一周时间更便宜!)。然而,当它使用时,我遇到了一些障碍。
宏查看一个Excel工作表上的名称,将其与不同工作表上的名称列表和关联的ID号相匹配,然后在第一个工作表上插入ID。在我开始在真实数据上使用它之前,这一切都很好。
以下是一些示例数据(所有这些信息都在一个单元格中......):
WARHOL *,Andy
PETO,John F
D3 GRECO,Emilio -20th C
HASELTINE,William Stanley
D3 DALI,Salvador
D3 SOSNO,Sacha
WEGMAN **,WILLIAM
一个星号表示它是一个印刷品,两个是一张照片,D3是一个雕塑,而不是一幅画。
当我使用此数据运行代码时,它会将*视为通配符,因此将始终在工作表中插入艺术家的第一个变体的ID。我需要的是一种宏不能将其作为通配符读取的方法。
我做了一些研究,发现插入〜之前*否定了通配符属性。我如何让我的代码这样做?我发现了由其他人编写代码的主要问题......你可能不理解它!
以下是代码:
Public Sub match_data()
'ctrl+r
On Error GoTo errh
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim r1, r2, i, exc As Long
Dim fp As Range
Sheets("Data").Activate
r1 = Cells(Rows.Count, "B").End(xlUp).Row
r2 = Sheets("List").Cells(Sheets("List").Rows.Count, "B").End(xlUp).Row
'MsgBox r1 & r2
exc = 0
For i = 2 To r1
If Range("B" & i).Value <> "" Then
With Sheets("List").Range("B2:B" & r2)
Set fp = .Find(Range("B" & i).Value, LookIn:=xlValues, lookat:=xlWhole)
If Not fp Is Nothing Then
Range("B" & i).Interior.Color = xlNone
Range("A" & i).Value = Sheets("List").Range("A" & fp.Row).Value
Else
Range("B" & i).Interior.Color = xlNone
Range("B" & i).Interior.Color = vbYellow
exc = exc + 1
End If
End With
End If
Next i
MsgBox "There are " & exc & " exceptions."
errh:
If Err.Number > 0 Then
MsgBox Err.Description
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
哦,我还需要为名单和ID做这个,不是吗?如果是这样,那只需要做一次,所以如果你能给我一个暗示,我会非常感激!
谢谢!
PS我知道我们现在使用的系统绝对糟糕(绝对不是标准化的第三种形式!),但我们正在快速耗尽时间和金钱,并且需要尽快启动并运行我们的产品!
编辑:为了澄清,这里是我正在使用的电子表格的图片......显然,在单元格A14和A15中,我想要ID号11和A;分别为12个
答案 0 :(得分:0)
这是告诉行星中恒星的一种方法:
Sub StaryNight()
Dim s As String, OneStar As String, TwoStar As String, ThreeStar As String
OneStar = "*"
TwoStar = "**"
ThreeStar = "***"
t = Range("A1").Text
ary = Split(t, ",")
s = ary(0)
If Right(s, 3) = ThreeStar Then
MsgBox "scupture"
Exit Sub
ElseIf Right(s, 2) = TwoStar Then
MsgBox "photograph"
Exit Sub
ElseIf Right(s, 1) = OneStar Then
MsgBox "print"
Exit Sub
End If
MsgBox "Painting"
End Sub
答案 1 :(得分:0)
好的,我已经解决了这个问题!我在“查找和替换”框中更改了变量。
如果我在查找和替换框中都放了〜*,并取消选中匹配整个单元格内容,我可以用〜*替换所有*(真的不明白但是哦!)
所以我在数据工作表上执行此操作,但不在列表工作表上,正常运行宏并解决问题!