Chiquilin Site■06.05.04_Excel:抽出データを詰めて表示する2

その1:参照範囲を名前定義
その2:数式を名前定義
その2:シート名に応じた科目を抽出
データを抽出2
→参考ファイル(科目別抽出022.xlsx)
→参考ファイル(元帳クエリ版022d.xlsx)

その1:参照範囲を名前定義

例えば出納帳に入力した内容を各科目ごとにシートを分けるという場合 簡単なのは「フィルタで抽出して 可視セルをコピー&該当シートに貼り付け」となります。自動化するなら これをマクロか もしくはクエリで抽出する方法をお勧めします。最近の Excelでは FILTER関数が追加されているのでこの手の処理はもっと簡単になっています。
元データを 下方向に入力する場合 毎回 最終行の取得が必要になります。これは面倒なので名前の定義を使って 参照範囲を自動で取得できるようにします。下記は参考ファイルの場合です。
参照範囲を名前定義
[挿入]→[名前]→[定義]
名__前:番号
参照範囲:=仕訳帳!$B$3:INDEX(仕訳帳!$B:$B,COUNTA(仕訳帳!$B:$B))
→[追加]
 
名__前:借方科目
参照範囲:=仕訳帳!$D$3:INDEX(仕訳帳!$D:$D,COUNTA(仕訳帳!$B:$B))
→[追加]
 
名__前:貸方科目
参照範囲:=仕訳帳!$E$3:INDEX(仕訳帳!$E:$E,COUNTA(仕訳帳!$B:$B))
→[追加]
 
名__前:仕訳範囲
参照範囲:=仕訳帳!$B$3:INDEX(仕訳帳!$G:$G,COUNTA(仕訳帳!$B:$B))
→[完了]
やっていることは全部同じです。この手のデータは 空白行を挟むことがありませんので COUNTA関数でデータの個数を数えれば何行データがあるのかは簡単に分かります。
ページの一番上へ

その2:数式を名前定義

次にシート名を取得します。今回は CELL関数を使いますが CELL関数を使う時は 必ずファイルを保存してから行って下さい。一応 B1セルにも名前を付けておきます。
シート名を取得
B1セル上で [挿入]→[名前]→[定義]
名__前:科目名
参照範囲:
=REPLACE(CELL("filename",B1),1,FIND("]",CELL("filename",B1)),"")
→[完了]
 
名__前:科目
参照範囲:=!$B$1
→[完了]
 
■各科目シートの B1セル
 =科目名
シート名を抽出する場合 CELL関数は 第二引数まで指定します。
この際 名前の定義では Aシートで使う時には「Aシート!A1」 Bシートで使う時には「Bシート!A1」としたい時に「!A1」とすることで 開いているシートに合わせて共通の名前を使うことができます。
ページの一番上へ

その3:シート名に応じた科目を抽出

最後に 該当する科目に応じた番号を抽出します。
配列数式になりますが 名前の定義を使うと「Ctrl + Shift + Enter で確定」という作業が不要になります。今回 番号を数値にしておいたので 抽出は SMALL関数だけでできます。文字列の抽出については「抽出データを詰めて表示する」を参照して下さい。
B3セル上で [挿入]→[名前]→[定義]
名__前:抽出 (2006.05.18 修正)
参照範囲:=SMALL(IF((借方科目=科目)+(貸方科目=科目),番号),ROW()-2)
→[完了]
 
■各科目シートの B3セル
 =IF(ISERR(抽出),"",抽出)
 必要行まで下方向にオートフィルコピー
これで番号を抽出できます。「(借方科目=科目)+(貸方科目=科目)」の部分は 仕訳帳でない場合はひとつでいいです。番号さえ抽出できれば 後の項目は VLOOKUP関数で抽出できます。
■各科目シートの C3セル
 =IF(B3="","",VLOOKUP($B3,仕訳範囲,COLUMN()-1))
 G列必要行までオートフィルコピー
以上です。
ページの一番上へ
ChiquilinSite トップページへ  Copyright(C) Chiquilin_site. All Rights Reserved.
inserted by FC2 system