EXCEL2007です。1つのシートから複数のシートに項目ごとに振り分けることはできますか?
EXCEL2007を使用しています。
1つのシートに2008年度の会計をまとめていましたが,それを項目ごとにシートわけをしたいのです。
たとえば
[SHEET1]
月 日 項目 内容 収入 支出 残高
4 10 会費 4月分 10000 10000
4 20 会議 定例会議 5000 5000
4 30 事務費 文具 500 4500
5 10 会費 5月分 10000 14500
となっている場合,会費だったらSHEET2,会議だったらSHEET3に,というようにしていきたいのです。
どのような関数を使用したらできるでしょうか?
どなたかわかる方がいらっしゃいましたら,教えていただきたいと思います。
また,この先のSHEET1に追加していく予定なのですが,それらを自動的に振り分けることはできるでしょうか?
EXCELは基本的な関数(if,sumなど)が使えるようになってきたばかりの初心者です。
よろしくお願いいたします。
回答(6件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
>Aの作業用セルというのはどのような効果があるのでしょうか?
※Sheet1のデータ抽出行の抽出用です
例:A1に入力された抽出項目キーとSheet1の項目名が一致する行にその行番号を表示させています。
B列以降の抽出作業は表示された行番号を元に拾い出しを行っています。
>上司に提出する際,「これはなんだ?」と言われそうで・・・。例えば今Aの列にある作業用セルを1番右,Gの列に移動することはできるのでしょうか?
※A列事態を非表示にする事で見やすくなるかと思います、もちろん移動も可能です。
移動の時は列自体を選択(列番号のAをクリック)、データ部の黒枠をクリックしてそのまま移したい場所へドラッグしてください、異動後にA列を削除して完了、何処に移動しても列の表示を隠した方が見栄えは良くなります。
この回答へのお礼
なるほど!
ありがとうございました!!
早速参考にさせていただきたいと思います。
何から何までありがとうございました!!
助かりました(T_T)
No.5ベストアンサー20pt
更に修正:
Sheet2以降のA2セルに
=IF(Sheet1!C2=$A$1,ROW(),"")
下方向コピー
B2セルに
=IF(COUNT($A:$A)<ROW()-1,"",OFFSET(Sheet1!A$1,SMALL($A:$A,ROW()-1)-1,0))
横方向Sheet1のデータがある列+1列までにコピー
そのまま下方向へコピー
今度は短くて分りやすいかな
この回答への補足
web2525様
質問者のmin-o-minです。
できましたぁぁぁ!ありがとうございました!
1つ質問させていただきたいのですが。
Aの作業用セルというのはどのような効果があるのでしょうか?
上司に提出する際,「これはなんだ?」と言われそうで・・・。例えば今Aの列にある作業用セルを1番右,Gの列に移動することはできるのでしょうか?
この回答へのお礼
夜遅いですのに…本当にありがとうございます。
Sheet2の形なのですが,Aの列に来るのはなんの項目なのでしょうか?
あーーーもう・・・理解できない自分にイラついてしまいます。。。
申し訳ありません。
お時間ありましたら,教えてください。
関数,ご自分で考えられてるんですね!!すごすぎます!!!
わたしでも理解できそうです。がんばります!
ついでに動作の説明:
Sheet2のA列は作業セルです
=IF(Sheet1!C2="","",ROW()*(Sheet1!C2=$A$1))
Sheet1のセルC2が空欄(データ未入力)の場合は空欄、データが入っている場合はA1と比較して集計する項目であればROW()関数で入力されたデータの行番号を返します、項目が一致しない場合は0を返します。
B2セル以降は
=IF(COUNTIF(OFFSET($A$2,0,0,COUNT($A:$A)),">0")+1<ROW(),""
現在のセル行がSheet1の抽出するデータ個数以上の行数の時に""(ブランク)を出力
後半部の
OFFSET(Sheet1!A$1,SMALL(OFFSET($A$2,0,0,COUNT($A:$A)),COUNTIF(OFFSET($A$2,0,0,COUNT($A:$A)),0)+ROW()-1)-1,0))
Sheet1の各列から目的のデータを抽出
抽出方法は、A列で算出したデータ行を0を除く少ない方から順に取り込みその行数だけオフセットしたSheet1のデータを抽出しています。
もう少し整理するともっと単純な計算式で実現可能かとは思いますが、閃きのみでやってますので、だらだらと長くなってしまいましたw
確認:Sheet1のデータは1行目に各項目、2行目以降がーデータで間違いないですか?
一部計算式修正です
Sheet2!A1セルに集計したい項目名 例:会費
Sheet2!A2セルに
=IF(Sheet1!C2="","",ROW()*(Sheet1!C2=$A$1))
下方向にコピー、ROW()の括弧の中は空欄ですSheet1のデータ数以上コピーしてください。
Sheet2!B2セルに
=IF(COUNTIF(OFFSET($A$2,0,0,COUNT($A:$A)),">0")+1<ROW(),"",OFFSET(Sheet1!A$1,SMALL(OFFSET($A$2,0,0,COUNT($A:$A)),COUNTIF(OFFSET($A$2,0,0,COUNT($A:$A)),0)+ROW()-1)-1,0))
ちょっと長いですが、エラー処理もしています、範囲指定の変更無しで何処までも範囲を増やすことが可能になっています。
Sheet3以降はSheet2をSheet自体コピーしてそのまま貼り付けて各シートのA1セルに集計したい項目名を入力で行ける筈です。
エラーにはならないはずですが、Sheet1のデータ内容が私の認識と違っているのかな?
この回答へのお礼
Sheet1ですが,質問した際の形と同じです。
Aに月,Bに日,Cぶ項目,Dに内容,Eに収入,Fに支出,Gに残高となっています。
どのような順番に変えればよいでしょうか?
何回も何回も申し訳ございません。
お時間ある時で構いませんのでよろしくおねがいいたします。
一例ですが、
Sheet2の
A1に 集計したい項目 B1から横に 月 日 項目 内容 収入 支出 残高
A2に=ROW()*(Sheet1!C2:C5=$A$1)
下方向コピー
B2に
=OFFSET(Sheet1!A$1,SMALL($A$2:$A$5,COUNTIF($A$2:$A$5,0)+ROW()-1)-1,0)
H15までコピー
集計の範囲を広げれば増えた分も対応していきます。
エラー処理はしていないので条件付書式でエラーを白文字に変更してください。
この回答へのお礼
回答ありがとうございました!
さっそくやってみました。が,エラーがでてしまったのです。
A2=ROW()*Sheet1!C2:C5=$A$1)で,ROW()の()の中には何かいれるのでしょうか?
重ね重ね質問で申し訳ありません。お時間あれば,回答お願いいたします。
今のままのリストの形態ですと、関数だけではできないのではないでしょうか。
補足ですがキーワードを検索するという関数は存在します、縦方向検索のVLOOKUPと横方向検索のHLOOKUPです。
関数だけで何とかしたいということであればVLOOKUP関数を使えるようなリストを考える必要があります。
手動でもかまわないのであれば、オートフィルタを使用し、会費のみを抽出してコピペする方法が最も簡単でしょうか。
自動で行う場合はマクロ(VBAという言語のプログラム)を組む必要があります。
この回答へのお礼
回答ありがとうございます!
マクロ,ですかぁ・・・。私にはちょっと荷が重く感じてしまいますねぇ。もっと勉強が必要,といったところでしょうか。
上司に「自動的に移動できるようにしてこい!」と言われ・・・。この3連休で少し勉強したいと思います。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











