FC2ブログ

おジさん学習帳

LibreOffice などOffice ソフトなどについてのブログです
おジさん学習帳 TOP  >  LibreOffice Calc >  L15P2.ods 設問2について LibreOffice Calc

L15P2.ods 設問2について LibreOffice Calc

問題 L15P2.ods 設問2 LibreOffice Calc

シート「請求書」を 完成させる



元々の解答ではないのですが 関数で完成させた場合

 B7 セルは [データ]→[入力規則]
  [データの入力規則] [条件]タブ
  「入力値の種類」 「セルの範囲」にして 「1000」~「1011」を選択表示させる

 F7 セルは VLOOKUP 関数で シート「顧客マスタ」から抽出表示

 H10 セルは J2 セル参照 YEAR 関数・MONTH 関数で 年月をばらばらにして
   DATE 関数で 月末=翌月1日の前日 を 数式で表現


一番ややこしい

売上情報 が表示されるように設定する

まずは B7 セルで 「顧客コード」を選択したら
その「顧客コード」のデータを選択できるように セル範囲 F2:J32 以外の部分を 利用する

普通ならば 一覧表の隣に 作業列を作成する方がわかりやすいのですが
今回の問題での指示では
 セル範囲 F2:J32 以外の部分を 自由に加工・変更などして利用してよい
ですので
一覧表すべて コピーしてもいいのですが
L3 セルに 「No.」列をコピーする
M4 セルに 
B7 セルの「顧客コード」と売上一覧の「顧客コード」が同じならば、その「No.」を表示とする
=IF(売上一覧.D4=$B$7,売上一覧.B4,"")
 M117 セルまで オートフィル

今作成した M4:M117 を 基準に抽出する


ただし かなりややこしい 数式になります
 
「ご購入日」を 表示するには
 INDEX 関数で 「売上一覧」B3:J117 から 抽出する
 選択する 行番号 は M4:M117 の 表示されている番号
 小さい番号から順に
 最初はわかりにくいのですが SMALL 関数で 範囲が M4:M117
 k(順位)は F16 セルが「1」 F17 セルが 「2」・・・
 1行ごとに 1つずつ増えていく = 1行ごと= ROW 関数を使う
 「顧客コード」によってデータ数が違うので
  M4:M117 のデータが 少ないことがある → エラーになる
  そこで IF 関数を使い エラーの場合は 空欄 を設定

まだまだ問題がある

  これは請求書なので 日付が 2月分が入ってはいけない
  1月の「ご購入日」のみを 表示する
  これも、IF 関数と MONTH 関数を使い設定する

なので、かなり長い数式が F16 セルに入る

G16・H16・I16 セルは 表示するINDEX 関数の列番号が 変わるだけ
条件は F16 セルの場合と同じ


数式なので B7 セルでの 「顧客コード」を変更すれば 

すぐに違う ≪明細一覧≫ に変わる


参考 L15P2_M.ods  

最初に書いたと思いますが これは私が考えたパターンです



 
本来は ピボットテーブルを シート「請求書」に 表示する

かつ B7 セルを 顧客コードを選択するセルにする

かつ 表示させるものを A~E 列で 収まるようにする

表示したら 先ほどと同じ 

1月分だけを ≪明細一覧≫へ 表示する


参考 : L15P2_P.ods 


スポンサーサイト



[ 2011年10月19日 00:17 ] カテゴリ:LibreOffice Calc | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

カウンター
検索フォーム
ブロとも申請フォーム
QRコード
QR