私は今週早く委託されたコードを書いていました。しかし、それを使用するとき、私は少しのつまみを打った。ワイルドカードをアスタリスクで読んでください
マクロは1つのExcelワークシート上の名前を調べ、別のワークシート上の名前と関連ID番号と照合して、そのIDを最初のワークシートに挿入します。私が実際のデータでそれを使い始めるまで、これはすべて問題ありませんでした。ここで
だいくつかのサンプルデータ(この情報のすべてが一つのセルである...):WARHOL *、アンディ
ピート、ジョン・F
D3 GRECO、エミリオ-20th C
ハセルタイン、ウィリアム・スタンレー
D3 DALI、サルバドール
D3 SOSNO、サシャ
ウェッグマン**、WILLIAM
つのアスタリスクは、それが印刷、2写真、D3彫刻、そして何も絵画であることを意味します。
このデータでコードを実行すると、ワイルドカードとして*が表示されるため、常にアーティストの最初のバリエーションのIDがシートに挿入されます。私が必要とするのは、マクロがワイルドカードとしてそれを読まない方法です。
私はいくつかの研究を行い、〜〜before *を挿入するとワイルドカードのプロパティが無効になることが判明しました。私のコードをどうすればいいですか?私は誰かが書いたコードを持っているという主な問題を発見しました...あなたはそれを理解できないかもしれません!ここで
がコードされています。また、私は、名前とIDのIないでしょうのリストについては、これを行うために
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
ああ必要があるでしょうか?もしそうなら、それは一度しか必要ないので、私にもそれについてのヒントを与えることができれば、私はとても感謝しています!
ありがとうございます!
PS私は現在、使用しているシステムが絶対にすごい(間違いなく正規化された3番目のフォーマットではありません!)と知っていますが、時間とお金が不足しているため、早急に製品を稼働させる必要があります。
編集:明確にするために、ここで私が働いているスプレッドシートのPICは、私はID番号11 & 12を望んでいた明らかにセルA14とA15に...あるそれぞれ
おっと、私は間違っているかもしれません(ミスタイプ?)...あなたの答えを読んで、自分の質問ができるほど明確ではないことに気付きました。私は名前の列を持っていますが、姓、名、アスタリスクは同じセルにあります! – MBot93