ワークブックに 1 月から 12 月までの各月の Excel シートが 12 枚あります。各シートには、同じ行にその月にマークされた名前と休暇、および表の最後に休暇の各カテゴリの合計値が含まれています。すべてのシートで各人の名前を検索して、これらの個々のシートの値を集計する必要があります。Excel でこれを実現するにはどうすればよいでしょうか。すべてのシートから vlookup の合計を試みましたが、エラーが発生するか、結果が表示されません。
答え1
ここでSUMIFを使用する方が簡単かもしれません。SUMIFは、特定のシートに人物が見つからない場合でもエラーを返さないためです(すべてのシートが存在する必要があります)。したがって、「jan」から「dec」までのシートがある場合は、12か月の合計にこの数式を試してください。
=SUM(SUMIF(INDIRECT({"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"}&"!B8:B110"),B8,INDIRECT({"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"}&"!AL8:AL110")))
名前付き範囲を使用すると、これを短縮できます。例:
Sheetlist ={"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"}
すると式は
=SUMPRODUCT(SUMIF(INDIRECT(Sheetlist&"!B8:B110"),B8,INDIRECT(Sheetlist&"!AL8:AL110")))
答え2
月ごとのシートを年間の 1 つのデータベース シートに統合すると、この要約の作成がはるかに簡単になります。その後、ピボット テーブルを設定して、人ごとに要約を短時間で行うことができます。
各人が 1 年間のうち数ヶ月しか休暇を取っていないため、vlookup の合計でエラーが発生しているのではないかと思います。これに対処するには、ルックアップを IFERROR 関数で囲みます。したがって、数式は次のようになります。
=sum(iferror(vlookup(<person name>,<January sheet name!data range>,<leave column number>,0),0),
iferror(vlookup(<person name>,<February sheet name!data range>,<leave column number>,0),0),
etc.
)
個々の列で各月のルックアップを設定し、列全体の結果を合計することで、この操作を少し簡単に行うことができます。
あまり詳しくないが、あなたのニーズを満たすかもしれないもう一つの選択肢は、データ統合コマンドです。このコマンドの説明は、ここ。
ピボットテーブルアプローチを強くお勧めします。