| 
    
     |  | >(日付はシリアル値です。) CDblで、シリアル値に変換するか、Value2でセルのシリアル値を使えば、
 エクセル関数のMatchが使えます。
 MsgBox CDbl(CDate("2005/8/8"))
 
 Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 Dim CLCOL As Long, NoHt As Variant, DtHt As Variant, i As Long
 If Target.Row <> 1 Then Exit Sub
 If Target.Count > 1 Then Exit Sub
 If Target.Value = "" Then Exit Sub
 CLCOL = Target.Column
 Application.EnableEvents = False
 NoHt = Application.Match(Target.Value, Sheets("データ").Columns(1), 0)
 If Not IsError(NoHt) Then
 Sheets("月報").Cells(2, CLCOL).Value = Sheets("データ").Cells(NoHt, 2).Value
 Sheets("月報").Cells(3, CLCOL).Value = Sheets("データ").Cells(NoHt, 6).Value
 '↓ここの最終行は、適当に変えてください。
 For i = 5 To Sheets("月報").Range("A65536").End(xlUp).Row
 DtHt = Application.Match(Sheets("月報").Cells(i, 1).Value2, Sheets("データ").Rows(3), 0)
 If Not IsError(DtHt) Then
 Sheets("月報").Cells(i, CLCOL).Value = Sheets("データ").Cells(NoHt, DtHt).Value
 Else
 'Sheets("月報").Cells(i, CLCOL).Value = "無し"
 End If
 Next
 Else
 MsgBox "Noなし"
 End If
 Application.EnableEvents = True
 End Sub
 
 |  |