関数で取引明細作成②~明細書を完成させる

関数で取引明細作成①~データ抽出からのつづき

顧客№及び期間を満たしたデータに番号を振る関数を入力することができました。

今度はその抽出フィールドの値を使い明細書を完成させます。

明細書のほうには、「明細№」というフィールドを作成しています。



この「明細№」と抽出フィールドの値が一致するデータを表示すればいいわけです。

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 件のコメント: