プロが教えるわが家の防犯対策術!

Excel vbaについて、知恵を下さい。

下表①で出勤が「あり」になっている対象者を隣のシートにある表②の該当するセルにとばしたいと思っています。

その際に休暇日を2日取得予定の(表でいうと佐藤さん)人を表②の様に行を分けて、表示させたいのですが、どのようなマクロの書き方でできますでしょうか?

わかりにくい説明ですみません。

※ 表②は変更出来ません。

どなたかアドバイスを頂ければ嬉しいです。
何卒宜しくお願い致します。

「Excel vbaについて、知恵を下さい」の質問画像

質問者からの補足コメント

  • 表①は、上にある表です。

    表②は、下にある表です。

      補足日時:2022/10/20 18:59

A 回答 (1件)

表①のシート名をSheet1とし、1行目が見出し


表②のシート名をSheet2とし、1行目が見出し
この条件で以下

Dim WS1 As Worksheet
Dim WS2 As Worksheet

Set WS1 = Worksheets("Sheet1")
Set WS2 = Worksheets("Sheet2")

END1 = WS1.Range("A65536").End(xlUp).Row

Cnt2 = 1

For Cnt1 = 2 To END1

If WS1.Range("E" & Cnt1).Value = "あり" Then

For Cnt3 = 2 To 3

If WS1.Cells(Cnt1, Cnt3).Value <> "" Then
Cnt2 = Cnt2 + 1

WS2.Range("A" & Cnt2).Value = WS1.Range("A" & Cnt1).Value
WS2.Range("B" & Cnt2).Value = WS1.Range("E" & Cnt1).Value
WS2.Range("C" & Cnt2).Value = WS1.Cells(Cnt1, Cnt3).Value

End If
Next Cnt3

End If

Next Cnt1
    • good
    • 0
この回答へのお礼

助かりました

出来ました!ありがとうございました!!

お礼日時:2022/11/12 09:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!