| 
    
     |  | 日付も検索対象に加えてみました。 Sheet1、2の日付がどうやって記入されているのか解らないと手が出ませんけど...。
 Sheet1、日付の表示形式が、「m/d"日"」
 Sheet2、日付の表示形式が、「3月4日」
 と、なっているとして。
 
 テスト環境がシート3だったもので、変えてください。
 She3 → She2
 Sheets("Sheet3") → Sheets("Sheet2")
 She3XX → She2XX
 
 データが同じパターンで増えて幾分には、Sheet2では255列までなら大丈夫ですが、256列はダメです。
 それと、日付は年号からしっかり2004/2/2と書くようにした方が、後々の為に良いと思います。
 関数で表示された日付は、マクロのFind検索でまともに引っかからないから...。
 手動なら大体引っかかるみたいですが、マクロだと、いちいち日付の入っているセルを探して、表示形式まで調べてって事になりそうなんで...。
 Match使えばいいじゃんと思えますが、一列または1行ずつしか調べられないし、ループ組むのにも面倒だし...。
 日付と名前のどちらを優先に使用かと迷いましたが、日付優先にしました。
 これって、表の構築と言うか検索対象がはっきり決まっていないというのが盲点ですね。
 
 Sub koshi2()
 Dim She1 As Worksheet, She3 As Worksheet
 Dim She1EdR As Long, She3EdR As Long, She3EdC As Long
 Dim I As Long, II As Long
 Dim FindN As Range, FindRag As Range, SacRag As Range
 Dim SacCo As Variant
 
 Set She1 = Sheets("Sheet1")
 Set She3 = Sheets("Sheet3")
 She1EdR = She1.Range("A65536").End(xlUp).Row
 She3EdR = She3.Range("A65536").End(xlUp).Row
 She3EdC = She3.Range("IV1").End(xlToLeft).Column
 Set SacRag = She1.Range("A1", She1.Range("IV1").End(xlToLeft))
 
 For I = 2 To She3EdC
 SacCo = Application.Match(She3.Cells(1, I).Value2, SacRag, 0)
 If Not IsError(SacCo) Then
 Set FindRag = She1.Range(She1.Cells(2, SacCo), She1.Cells(She1EdR, SacCo + 1))
 For II = 2 To She3EdR
 If She3.Cells(II, 1).Value <> "" Then
 Set FindN = FindRag.Find(She3.Cells(II, 1).Value, LookAt:=xlWhole)
 If Not FindN Is Nothing Then
 She3.Cells(II, I).Value = She1.Cells(FindN.Row, 1).Value
 Else
 She3.Cells(II, I).Value = ""
 End If
 Else
 She3.Cells(II, I).Value = ""
 End If
 Next
 Else
 She3.Range(Cells(2, I), Cells(She3EdR, I)).Value = "日付Err"
 End If
 Next
 Set She1 = Nothing
 Set She3 = Nothing
 Set SacRag = Nothing
 Set FindRag = Nothing
 Set FindN = Nothing
 End Sub
 
 |  |