未分類

Excel - 連続した請求明細から指定した合計を抽出する

少々特殊ですが、一つのシートに連続した請求明細が存在します。その中から指定した宛先の請求合計を抽出することになりました。

シート例

次のように 2 名の宛先とその明細が一つのシートに存在します。

A B C
1 名前 山田花子
2 品物 金額
3 1 バナナ 100
4 2 リンゴ 150
5 3 みかん 50
6 4
7 5
8 合計 300
9
10 名前 田中一郎
11 品物 金額
12 1 バナナ 100
13 2 みかん 50
14 3 メロン 500
15 4 パイナップル 200
16 5
17 合計 850

抽出例

この表からそれぞれの宛先の合計金額を抽出します。
<山田花子さんの合計値を抽出する計算式> =OFFSET($C$1,MATCH("山田花子",B:B,0)+6,0)
<田中一郎さんの合計値を抽出する計算式> =OFFSET($C$1,MATCH("田中一郎",B:B,0)+6,0)

説明

一つ一つ説明します。

1. MATCH("山田花子",B:B,0) は、指定した検索値の位置を決定します。具体的には B:B 列から "山田花子" が完全一致する位置を算出します。この場合は 1 番目でヒットしますので 1 が返されます。
同様に MATCH("田中一郎",B:B,0) の場合は、10 が返されます。エクセルの行数と一致していることが分かります。

2. 次に合計セルの位置を決定するために OFFSET 関数を使います。MATCH("山田花子",B:B,0) で 1 が返されますので、山田花子さんの OFFSET 関数は OFFSET($C$1,1+6,0) に展開されます。これは $C$1 から 行方向に 7 (1+6) 行、列方向に 0 列移動することを意味します。これで合計値が入っているセルが指定されます。
同様に田中一郎さんの場合は、OFFSET($C$1,10+6,0) に展開され、対応した合計セルが指定されます。
ちなみに、OFFSET 関数内で、行 に 6 を加算していますが、これは名前と合計行の間隔です。つまり、名前の行位置を見つけて、そこから合計行がどのくらい離れているかがカギになります。
これで、山田花子さん、田中一郎さん、それぞれの合計値 300 円と 850 円を抽出することができます。

-未分類