• ベストアンサー

一度の入力で別の表に自動表示させたい

エクセルで一つの表からデーターを抽出し、自動的に別の表に表示させたいのですがどのようにしたらよいかわからないので教えてください。 例) 担当者 阿部 7/10 山田花子 6000円 担当者 伊藤 7/14 山田太郎 5000円 担当者 阿部 7/20 山田四郎 3000円 と上の表を入力したら 担当者別に別の表に自動的に表示させたい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

 呼ばれて飛び出て、ジャジャジャジャジャ~ン! (^_^)/ >甘えついでにもう一つ 教えてください。  ゲロゲロ…。 (^o^;  と言いたいところですが、このサイトの趣旨は甘えたい「教えて君」と 甘えられたい「教えたがり君」の橋渡しのようですから、まぁおつきあい しましょう。(^^; > 先月繰越額 100円 >(入金)50円(出金)50円 (累計)200円 >という表があって  えっと、それはつまり…、     A    B    C    D  1  入金  出金 前月繰越  累計  2           100   100  3   50   50        200  4                ?  5                ?  …という感じの表で良ろしいでしょうか?  累計「 200」という値の意味がよく分かりませんが、+増でも-減でも 動いた金額に違いはないから累計にしているのかな? (?_?)  それと、残金という欄は必要ないのでしょうか?  まぁ、それはそれとして…。 >入金のみの空欄だけだったら問題ないのですが「出金も空欄だったら >・・・」という複数のセルの空欄の場合どうやったらよいのでしょう >か?  空欄という条件が「入金」のみなのか「出金」のみなのか、はたまた 両方とも空欄の場合なのか、それによって違うと思います。  たぶん、どちらか一方だけでも空欄がある場合…そして両方とも空欄 の場合も「D」列を空欄にしたい、という意味だろうと推測します。  その場合、例えば D4 セルに式を入れるとすれば…、  =IF(COUNTBLANK(A4:B4)>0,"",A4+B4+C4)      ※A4からB4までの間に空欄が1個以上ある場合の処理  …と、  =IF(OR(A4="",B4=""),"",A4+B4+C4)      ※A4もしくはB4のいずれかに空欄がある場合の処理  …の、どちらでも良いと思いますが、もっとスマートな方法があるかも 知れません。  単に空欄があったら合計欄も空欄にしたいだけなら、ツールメニューの オプションで、「表示」タブのウィンドウオプションにある「ゼロ値」の チェックを外して、いっそシート内にある数字の「0」は全部表示しない ようにしてしまうという手もありますが、その辺は如何でしょうか。

karumen-46
質問者

お礼

できたーーーーーーーーーーーーーーーーーーーーヽ(^。^)ノ おげさまで明日8月1日から新システムとして稼動することになりました。 本当に色々ありがとうございました。 PS. ご指摘通り累計は単なる入力間違いで意味わからなくてごもっとも。おはずかしい・・・

その他の回答 (4)

回答No.4

 まいど、ANo.3 です。 (^^ゞ >>並べ替えおわったものを 「例)担当者 阿部」だけの表に入れ >…ん~、どうでしょう? ピボットテーブルなどを使うのかな?   ソート結果のシートでフィルタ機能を使えば簡単なのですが、それを 自動的に担当者ごとの表にするには、やっぱりマクロしかないのかな?

karumen-46
質問者

お礼

ありがとうございます。何とかなりそうです。 甘えついでにもう一つ 教えてください。 先月繰越額 100円      (入金)50円(出金)50円 (累計)200円 という表があって    累計に計算式を入れる時,IF関数を使って「空欄だったら空欄で・・・」ってやつをいれるのですが 入金のみの空欄だけだったら問題ないのですが「出金も空欄だったら・・・」という複数のセルの空欄の場合どうやったらよいのでしょうか?

回答No.3

>マクロとはスコイ!お見事です。~ 中略~大変感謝しております。  いえいえ。 オイラは単なる一般人です。ここの参加者には今は静観 しているだけのもっと詳しい方が大勢いらっしゃるハズです。  そんなに感心されるとお恥ずかしい限りで、かえって恐縮してしまう というものです。 >そこで 更に私がやりたいことは、   ど、ドキッ…。(^^; >並べ替えおわったものを 「例)担当者 阿部」だけの表に入れ  それは既にソート結果で実現されているような気がしますが、厳密に 別々の表じゃないとダメなんでしょうか?  もちろん出来ないことはないような気がします。 関数だけだと ん~、どうでしょう? ピボットテーブルなどを使うのかな?  >担当者70名それぞれの表に自動的に入り合計金額をだしたいと  それは、もう一つ別に集計用として担当者一覧のシートを作り、 ソート結果の表を参照データにして SUMIF(担当差別の合計用)や COUNTIF(担当者別の処理件数用)関数等で 簡単に自動集計できる と思います。 >そこが関数を使っても無理ということなのでしょうか?  ひょっとしたら、質問者さんはここでオイラが提案している方法 とは違うブックをイメージしているのかも知れませんね。  もし質問者さんが本回答で満足されない時は、この OkWave には エクセル専用のカテゴリがあるので、そちらで再質問されることを 推奨いたします。  http://okwave.jp/207/218/c232.html >少し前に進めた気がします (*^。^*)  更に進むには、オイラがいつもお世話になっているフォロミィと いう、優しくもかつIT関係に詳しい鉄人達がたくさん住んでいる SNS系コミュニティに参加してみるのも良いでしょう。  特に「40歳からのパソコンフォーラム」会議室はお勧めです。  http://folomy.jp/from40pc/      ↑  初心者大歓迎というポリシーを維持し続けています。(^_^)/

回答No.2

>担当者別に別の表に自動的に表示させたい。  「担当差別に~」ということはデータの「並び替え」ですね。 そして それを自動的に実行させたい…というご要望でよろしいでしょうか?  つまり、ご質問の「例)」で言うと…、 A  B    C      D     E 1 担当者 日付(月日)  該当者    金額 2 阿部  7月10日   山田花子  6000円 3 伊藤  7月14日   山田太郎  5000円 4 阿部  7月20日   山田四郎  3000円 5 鈴木  7月17日   山田祐二  4500円 6 伊藤  8月 3日   山田花子  2500円  …という感じの表を、例えば別のシートに…、 A  B    C      D     E 1 担当者 日付(月日)  該当者    金額 2 阿部  7月10日   山田花子  6000円 3 阿部  7月20日   山田四郎  3000円 4 伊藤  7月14日   山田太郎  5000円 5 伊藤  8月 3日   山田和歌子 2500円 6 鈴木  7月17日   山田祐二  4500円  …という感じの並び替え(ソート)実行後の表になるように変換したい ということですよね?  一応そいうご要望と解釈して回答してみます。 >なんとか関数とかを使ってできないか1ヶ月近く考えたりしている~  う~ん…。 関数だけでは、なかなか難しいようです。  「RANK」や「VLOOKUP」、そして「SMALL」/「ROW」関数などを駆使して 試行錯誤してみましたが、複数の行の中に担当者の名前が重複していると 1名分、例えば「阿部」氏のデータしか抽出してくれなかったりします。  また 「SMALL」関数は、ソート(分類)したい項目が担当者別ではなく 数値であれば十分使えるのですが、今回は該当の引数が名前という文字列 データなので(数の大小を判断しているらしい)関数として機能してくれ ないのです。  そいうわけで、結局マクロを使った方が簡単!というのが結論です。  例えば、ご質問の例で、元データのシートを「元データ」というシートの 名前に、そして並び替え後のシートを「ソート(マクロ実行)後のデータ」 という名前にしたと仮定して、次のようなマクロを実行してみました。 ------------------------------------------------------------------------------------------------- Sub 自動でソート() ' ' 自動でソート Macro ' ' Keyboard Shortcut: Ctrl+Shift+Q ' Range("B1:E6").Select Selection.Copy Sheets("ソート(マクロ実行)後のデータ").Select Range("B1").Select ActiveSheet.Paste Range("B2:E6").Select Application.CutCopyMode = False ActiveWorkbook.Worksheets("ソート(マクロ実行)後のデータ").Sort.SortFields.Clear ActiveWorkbook.Worksheets("ソート(マクロ実行)後のデータ").Sort.SortFields.Add Key:=Range( _ "B2:B6"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("ソート(マクロ実行)後のデータ").Sort .SetRange Range("B2:E6") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlStroke .Apply End With Range("A1").Select ' ←これは単なる「A1」へのカーソル移動? End Sub -------------------------------------------------------------------------------------------------  いちおう指定したショートカットキーで所望の動きをしてくれました。  因みに、これは実際の「並び替え」操作を「マクロの記録」で記述した だけであり、オイラもマクロ自体に詳しいわけではありません。  だから「Range("B1:E6").Select」などのセル番地(選択範囲)は 作成 したシートによってかなり違ってくる思います。  しかし、70件ほどのデータなら、行番地もそれ程増えないでしょう。  質問者さんお使いの Excelのバージョンが不明なんですが、「マクロの 記録」も思ったより難しくはないので、ぜひ挑戦してみてください。  マクロの記録は、Excel2002 の場合…、  「ツール」メニュー → 「マクロ」 → 「新しいマクロの記録」→ マクロに名前をつけた後ショートカットキーを任意に指定して「OK」を クリック → ※マクロ記録中の小窓が表示される。  ここで実際の「並び替え」操作を実行する。  (元データをコピー→ソート用シートに貼り付け→名前順に並び替え)  →小窓左側の「記録終了」ボタンをクリックして小窓を閉じる。  …で良いと思います。  あるいは、Excel 2007なら…、  「表示」メニュー → 「マクロ」(リボン)ボタン → 「マクロの 記録」 → 実際の「並び替え」操作を実施  (元データをコピーしてソート用シートに貼り付け名前順に並び替え)  → 「マクロ」(リボン)ボタンの「記録終了」をクリック  …という感じです。 参考にしてください。 それでは! (^o^)/~~

karumen-46
質問者

お礼

マクロとはスコイ!お見事です。考えてもみなかったので驚きです。早速、説明いただいた通りにマクロに挑戦してみました。そのマクロはおかげさまでうまくいきました。ありがとうございます。大変感謝しております。そこで 更に私がやりたいことは、 並べ替えおわったものを 「例)担当者 阿部」だけの表に入れ 担当者70名それぞれの表に自動的に入り合計金額をだしたいというのが希望です。そこが関数を使っても無理ということなのでしょうか?少し前に進めた気がします(*^。^*)

  • kantogun
  • ベストアンサー率30% (40/130)
回答No.1

抽出後のデーターをコピーして貼り付ける方法がベストです。

karumen-46
質問者

お礼

早速のお返事ありがとうございます。 私の説明不足でしたが、実は一つ目の表でいくと担当者が70名程いて莫大のデーターがありるため、コピーと貼り付けだと間違えや手間がかかってしまい なんとか関数とかを使ってできないか1ヶ月近く考えたりしているところです。ただし データーベースが使える環境ではなく、エクセルでできる方法があれば教えていただきたいのです。やはり無理なんでしょうかね・・・・

関連するQ&A