• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルについての質問です。)

エクセルでデータの振り分けをする方法

このQ&Aのポイント
  • エクセルで別のブックにデータを吸い出し、特定の条件に基づいて振り分ける方法について教えてください。
  • 具体的な例を挙げると、ブックAに入力されているデータのうち特定の文字列を含むデータをブックBに集め、そのデータの特定の列を判別し、別のシートに振り分けたいと考えています。
  • 質問の仕方が分かりづらくて申し訳ありませんが、どのような関数や手法を使用すればこのような処理が可能か教えていただけますか?

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

ご質問の意味が、Sheet1のE列の文字列の左3つが「aaa」の行のD~F列のデータを一覧表示したいという意味なら、以下の式を入力し、右方向に3つ、下方向に適当数オートフィルコピーしてください。 =INDEX(Sheet1!D:D,SMALL(INDEX((LEFT(Sheet1!$E$2:$E$100,3)<>"aaa")*1000+ROW($E$2:$E$100),),ROW(A1)))&"" F列の数字データを計算できる数値として表示したい場合は、数式の最後の「&""」を削除して、「=IF(D列の値="","",&を削除した数式)」のような数式にしてください。 上記の数式は多用するとシートの再計算に時間がかかり実用的ではないので、数式で対応する場合は、検索条件をドロップダウンリストなどで選択して、すべての条件の結果を1枚のシートで表示するなどの工夫が必要です(表示データが多い場合は、オートフィルタの操作をマクロの記録で記録するなどして、マクロで対応するのが良いと思います)。 これを実行するには、検索条件に重複部分がないなどの一定の基準が必要となりますが、実際の検索条件は、特定の文字を含むという条件ではないのでしょうか?

cloudy-wolf0814
質問者

お礼

ありがとうございます! やはりマクロが必要になるんですね・・・ 苦手ですがご回答を参考にしながら 勉強してやってみます・・・^^

その他の回答 (2)

回答No.2

こんにちは 最終列の右隣の列(例えばG列)に集計用の文字を出すようにして、 オートフィルターで抽出して自分でコピペしたほうが早いですよ。 集計用のコードは、別シートに品番と集計コードの対応表を作って VLOOKUPを使用して引っ張ってきてやれば式をコピーすれば よいので、商品がたくさんあっても、式が複雑にならなくてすみます。 マスタ(シート名:商品マスタ)   A      B 1 品番    集計先CD 2 122    シート1 3 123    シート1 4 213    シート2 5 312    シート3     : データのシート   A  B  C    D   E   F  G 1 日付 氏名 伝票No. 品番 品名 数量 集計先 2 10/1 山本 001 123 aaa a 2 3 10/2 佐藤 002 122 aaa b 1 4 10/3 加藤 003 213 a ccc 1 5 10/4 田中 004 312 a ddd 1 G2に =VLOOKUP(D2,商品マスタ!$A:$B,2,0) と入力して、下方向にコピーします。 そうすると   A  B  C    D   E   F  G 1 日付 氏名 伝票No. 品番 品名 数量 集計先 2 10/1 山本 001 123 aaa a 2   シート1 3 10/2 佐藤 002 122 aaa b 1   シート1 4 10/3 加藤 003 213 a ccc 1   シート2 5 10/4 田中 004 312 a ddd 1   シート3 とでるので、1行目を選択してオートフィルターで G列のシート1を選択すれば、シート1の行のみ抽出できます。 ※マスターに品番が存在しないと#N/Aのエラーつきます。 抽出したら、データの部分をコピーしてシート1にペーストします。 関数で一度にできるようにできれば一番いいですけど、式が複雑になりますし 商品が増えると対応できないので、シートがよほどたくさんない限り、コピペ くらいの手間を惜しんではいけません。 また、式が複雑になると他人がわからないという状態になりますので できるだけ、簡単に他人に引き継げるように工夫したほうがよいですね。 あと、このやり方はマスタをきちんと作成して対応するのが基本です。 マスタのメンテナンスも忘れないようにしましょう。 期待した内容と違うかもしれませんが、ご参考まで

cloudy-wolf0814
質問者

お礼

ありがとうございます! 参考にさせていただきます^^

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

関数では難しいと思う。ブックAのシートデータの中身で、ブックBのどれかのシートに振り分ける(変える)パターンだから。 こういうビジネスがらみの問題はVBAが必須と言うのが私の持論。 VBAはブックBのシートに、条件にあったデータをそのシートに投げ入れるイメージだが、 関数ではブックBのシートでは、通り過ぎるデータの中から、条件に合うものを吸い取るイメージで、式が複雑化して事実上不可能と思う。、 前者はVBAなら場合ワケで振分ければ、仕舞いで簡単にできる。 ーー 振り分けのルールの、質問での表現の書き方も、もう少し、系統立てて書けないのかな。 例 振り分けルールは、E列の文字列を使う。 文字列にスペースがある場合は、先頭からその前の桁までを振り分け基準文字列にする? この程度だったら関数で出来るが、それは判ってますか? シート名もその名前にするのかな? またエクセル関数ではシートを作るなんて出来ないのはご存知だろうね。 前もってシートを作っておかないといけないが、どれだけ作ったらよいかなど、質問者には出し方がわかるのかな。 当面は基準の文字列を作業列にセットし。その列でソートし、まとまった塊をコピ-貼り付けしたら。シートの数だけ作業必要があるが。

cloudy-wolf0814
質問者

補足

質問内容が分かりづらくてすみません・・・ もう少し内容を煮詰めてから改めてお聞きしたいと思います。

関連するQ&A

専門家に質問してみよう