2017-12-19 5 views
-1

ウェブ上で解決策が見つからない場合は、誰でも私を助けることができるのだろうかと思いました。以下は私のカレンダーの例です。 Calendar現在の日付に基づいてExcelのカレンダーで特定の行とセルを検索する

私のカレンダーは月、週番号、日が一番上です。左端に名前があります。私は今日のセルにFを持つ人の名前を取得しようとしています(4月13日が今日だったら)。日はDD.MM.YYYY形式です。

詳細: 今日の行3の日付を見つけるコードを探しています。その日付が見つかると、 "F"を含む列Wのすべてのセルが見つかります。それから私はその行の人の名前が欲しい。

最後に、私は何を考えているのか悪いイメージを示しました。 enter image description here

出力は次のようになります。すべての名前が1つのセルにリストされるべきではありません。 output

何か助けて欲しいです! -J

+0

そして、どのように出力をしたいですか?リストで?単一の細胞で?出力がどのように見えるのかをご確認ください。 –

+0

名前を出力するだけです。この例では:D5、D8、D13の値(Name1、Name4、Name9)これはリストに入れる必要があります。 –

答えて

0

あなたの3行目はDD/MM/YYYYなどの日付を持っていますが、カスタムの形式を変更し、唯一のDDが含まれ、その後、次のように動作します場合:

Sub foo() 
Dim LastRow As Long 
Dim LastCol As Long 
Dim NextEmptyRow As Long 
Dim SearchDate As String 

LastRow = Sheet1.Cells(Sheet1.Rows.Count, "D").End(xlUp).Row 
'SearchDate = Format(Now(), "dd/mm/yyyy") 
'change the line below with the one above to search for today's date 
SearchDate = "13/04/2017" 'find "today's" date 
LastCol = Sheet1.Cells(3, Sheet1.Columns.Count).End(xlToLeft).Column 'get the last Column 
Sheet2.Cells(1, 1).Value = "Output" 
For i = 1 To LastCol 'loop through all columns 
ValueToFind = Format(Sheet1.Cells(3, i).Value, "dd/mm/yyyy") 'format the values on row 3 to full date as dd/mm/yyy 
    If ValueToFind = SearchDate Then 'if date on Row 3 matches SearchDate then 
     For x = 4 To LastRow 'loop through rows 
      If Sheet1.Cells(x, i).Value = "F" Then 'if F exists on that column 
       NextEmptyRow = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row + 1 'check the next free row on Sheet 2 column A 
       Sheet2.Cells(NextEmptyRow, 1).Value = Sheet1.Cells(x, 4).Value 'copy the name to Sheet2 on the next available Row 
      End If 
     Next x 
    End If 
Next i 
End Sub 
+0

これを理解するために私をしばらく時間がかかりました!私は私のプロジェクトで上記の例で示すのを忘れたいくつかの余分な細胞を持っていたので。しかし、私はついにそれを理解しました。 LastColを3から16に編集して終了し、それが私の問題を修正しました。 ありがとう! –

関連する問題