Ich hatte ein Stück Code in dieser Woche in Auftrag gegeben (billiger, um einen Experten zu haben, schreiben Sie es als für mich eine Woche zu verbringen versuchen!). Aber wenn ich es benutze, habe ich einen kleinen Haken gefunden.Read Wildcard als Asterisk
Das Makro sucht nach einem Namen in einem Excel-Arbeitsblatt, gleicht es mit einer Liste von Namen und zugehörigen ID-Nummern in einem anderen Arbeitsblatt ab und fügt dann die ID in das erste Arbeitsblatt ein. Das war alles in Ordnung, bis ich begann, es mit echten Daten zu verwenden.
Hier einige Beispieldaten (alle diese Informationen in einer Zelle ist ...):
WARHOL *, Andy
PETO, John F
D3 GRECO, Emilio bis 20. C
Haseltine, William Stanley
D3 DALI, Salvador
D3 SOSNO, Sacha
WEGMAN **, WILLIAM
Ein Stern bedeutet es einen Druck ist, zwei eine Fotografie, D3 eine Skulptur, und nichts ein Gemälde.
Wenn ich den Code mit diesen Daten ausführen, sieht es * als Platzhalter und wird immer die ID der ersten Variante des Künstlers in das Blatt einfügen. Was ich brauche, ist eine Möglichkeit für das Makro, es nicht als Platzhalter zu lesen.
Ich habe einige Nachforschungen gemacht, und festgestellt, dass das Einfügen von ~ vor * die Wildcard-Eigenschaften negiert. Wie würde ich meinen Code dazu bringen? Ich habe das Hauptproblem entdeckt, Code von jemand anderem geschrieben zu haben ... Du wirst es vielleicht nicht verstehen! Hier
ist der Code:
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
Oh auch, würde ich dies tun müssen für die Liste der Namen und IDs würde ich nicht? Wenn ja, das muss nur einmal gemacht werden, also wenn du mir einen Hinweis darüber geben könntest, wäre ich so dankbar!
Danke!
PS Ich kenne das System, das wir im Moment absolut saugt (definitiv nicht 3. Form normalisiert!), Aber wir haben schnell keine Zeit und Geld mehr, und müssen unser Produkt so schnell wie möglich!
EDIT: Um zu klären, hier ein Bild der Tabellen ist arbeite ich mit ... Offensichtlich in Zellen A14 und A15 ich die ID-Nummern 11 & 12 bzw.
Hoppla, habe ich misspoke (vertippt?) ... Als ich Ihre Antwort gelesen hatte, wurde mir klar, dass meine Frage nicht so klar war, wie es sein könnte. Ich habe eine Spalte mit Namen, aber der Nachname, Vorname und mögliche Sternchen sind in der gleichen Zelle! – MBot93