2016-03-25 4 views
0

私は今週早く委託されたコードを書いていました。しかし、それを使用するとき、私は少しのつまみを打った。ワイルドカードをアスタリスクで読んでください

マクロは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に...あるそれぞれ

Clarification

答えて

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 

enter image description here

+0

おっと、私は間違っているかもしれません(ミスタイプ?)...あなたの答えを読んで、自分の質問ができるほど明確ではないことに気付きました。私は名前の列を持っていますが、姓、名、アスタリスクは同じセルにあります! – MBot93

関連する問題