顧客№及び期間を満たしたデータに番号を振る関数を入力することができました。
今度はその抽出フィールドの値を使い明細書を完成させます。
明細書のほうには、「明細№」というフィールドを作成しています。

この「明細№」と抽出フィールドの値が一致するデータを表示すればいいわけです。
VLOOKUP関数を使い表示します。今回もエラーを回避するため、IFERROR関数と組合わせて完成させます。
明細書の「売上日」セル「B13」を選択し、「=IFERROR(VLOOKUP(」まで入力します。

検索値は「明細№」なのでセル「A13」を選択します。コピーも考えて列のみ固定の複合参照にします。(F4キー3回)これにより、行方向へのコピーの時、行番号のみ相対で変化します。 「,」で区切ります。

データ範囲を選択し、絶対参照にします。(F4キーを押す)「,」で区切ります。

売上日は4列目なので「4」と直接入力します。「,」で区切ります。

あとは、完全一致の「FALSE」を入力し、「)」で閉じます。そして最後にIFERRORの引数、エラーの時の処理を指定します。空白を表示したいので「""」と入力し「)」で閉じて完成です。

=IFERROR(VLOOKUP(①$A13,②$A$1:$H$7,③4,FALSE),④"")
①明細行「A13」を検索値として②データ範囲「A1」から「H7」から検索し、③4列目を表示する。④エラーの場合はなにも表示しない。という意味になります。
Office2003の場合は
=IF(ISERROR(VLOOKUP($A13,$A$1:$H$7,4,FALSE),"",VLOOKUP($A13,$A$1:$H$7,4,FALSE))となります。少し長いですね。
Enterキーを押します。
コピーして、列番号のみ修正しましょう。(図は商品№の欄を修正しています)

「金額」欄まで修正できたら、明細行すべてにコピーしましょう。


「青森太郎」さんのデータは2行しかないので、明細№「3」は空白になりましたね。これはIFERROR関数で、エラーの場合はなにも表示しないという処理をしているからです。
数量と金額欄に合計する数式を入れて完成です。

それでは「弘前花子」さんで試してみます。

OKですね。
期間を変更してみましょう。

だいじょうぶですね。
このように、同一の顧客や商品などのデータが複数存在するときは、唯一無二の項目、つまり重複しないフィールドを追加することで識別が可能になります。
今回は同一シートでの例で解説しましたが、普通はデータ量が何千、何万とあるはずなので、データシートと明細書のシートは分けて作成すると思います。
明細行が1ページに収まらないなどの予想がされる場合は、明細書を2つ以上作って対応する必要があります。その場合、2ページ目の明細№は1ページ目からの続き番号でなければなりません。注意しましょう。
明細書の上部に自社名などの項目を追加し、見栄えの良い書類にしましょう。ぜひ挑戦してみてください。
0 件のコメント:
コメントを投稿