[[20250504075416]] 『日誌(別シート)で項目と日付を抽出したい』(ぶんぶん丸) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『日誌(別シート)で項目と日付を抽出したい』(ぶんぶん丸)

・日誌を1日〜31日までシートごとに作成
・その日に行った業務内容を、別シート「集計シート」にまとめて抽出したい

   1日業務内容:「事務所掃除」「倉庫内点検」
   2日業務内容:「倉庫内点検」「室温管理」
   3日業務内容:「事務所掃除」
        ↧
  31日業務内容:「事務所掃除」「倉庫内点検」

という日誌を別シートで1日ごとに作成した内容を、集計シートに
指定する項目と行った日にちを抽出して表示させたい場合、どのように
行ったらよいかお教え願います。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


集計シートに直接記入していけば日誌なんていらないのではないかと思うのですが。
(?) 2025/05/04(日) 08:37:04

VBAでの回答

前提条件として
各日誌シート名は「1」「2」...「31」
各シートの業務内容は A列(A1から下にリスト)に記載
集計先はシート名が「集計」

Sub test()

    Dim ws集計 As Worksheet
    Dim ws日誌 As Worksheet
    Dim i As Integer
    Dim 最終行 As Long
    Dim 出力行 As Long
    Dim セル As Range

    ' 集計シートをセット
    Set ws集計 = ThisWorkbook.Sheets("集計")
    ws集計.Cells.ClearContents
    ws集計.Range("A1") = "日付"
    ws集計.Range("B1") = "業務内容"
    出力行 = 2

    ' 1日〜31日シートを順に処理
    For i = 1 To 31
        On Error Resume Next
        Set ws日誌 = ThisWorkbook.Sheets(CStr(i))
        On Error GoTo 0

        If Not ws日誌 Is Nothing Then
            最終行 = ws日誌.Cells(ws日誌.Rows.Count, "A").End(xlUp).Row

            For Each セル In ws日誌.Range("A1:A" & 最終行)
                If セル.Value <> "" Then
                    ws集計.Cells(出力行, 1).Value = i & "日"
                    ws集計.Cells(出力行, 2).Value = セル.Value
                    出力行 = 出力行 + 1
                End If
            Next セル
        End If

        Set ws日誌 = Nothing
    Next i

    MsgBox "集計が完了しました", vbInformation
End Sub

(暇な人) 2025/05/04(日) 09:35:37


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.