- ベストアンサー
エクセルの検索機能について
エクセルの詳しい方に質問です。 まず下記のようなデータがあります。 A列 B列 安部 10 佐藤 20 佐藤 30 佐藤 25 田中 10 このデータをもとに下記のような表をつくりたく思っています。 A列 B列 C列 D列 安部 10 佐藤 20 30 25 田中 10 なお、A列はこちらで入力し、B列~D列に式を入力しておき自動計算するようにしたいのです。 わかる方のお力添えをよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
今仮に、上の表がSheet1、下の表がSheet2にあるものとします。 まず、Sheet2のB1セルに次の数式を入力して下さい。 =IF(COLUMNS($B:B)>COUNTIF(Sheet1!$A:$A,$A1),"",INDEX(Sheet1!$B:$B,SUMPRODUCT(ROW(OFFSET($A$1,,,MATCH("゛",Sheet1!$A:$A,-1)))*(COUNTIF(OFFSET(Sheet1!$A$1,,,ROW(OFFSET($A$1,,,MATCH("゛",Sheet1!$A:$A,-1)))),$A1)=COLUMNS($B:B))*(OFFSET(Sheet1!$A$1,,,MATCH("゛",Sheet1!$A:$A,-1))=$A1)))) 次に、Sheet2のB1セルをコピーして、Sheet2のB1セルの右方向と下方向に存在するセル範囲に貼り付けて下さい。 以上です。 尚、Sheet2の1行目が他の用途に使用中で、実際にデータを表示するのが2行目からの場合には、B2セルに入力する数式は、次の様になります。 =IF(COLUMNS($B:B)>COUNTIF(Sheet1!$A:$A,$A2),"",INDEX(Sheet1!$B:$B,SUMPRODUCT(ROW(OFFSET($A$1,,,MATCH("゛",Sheet1!$A:$A,-1)))*(COUNTIF(OFFSET(Sheet1!$A$1,,,ROW(OFFSET($A$1,,,MATCH("゛",Sheet1!$A:$A,-1)))),$A2)=COLUMNS($B:B))*(OFFSET(Sheet1!$A$1,,,MATCH("゛",Sheet1!$A:$A,-1))=$A2))))
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! カテゴリーはMS Office か Office系ソフト の方が良いと思いますが・・・ せっかく覗かせてもらったので色々方法はあるかと思いますが、一例です。 ↓の画像で左側がSheet1でSheet2に表示するようにしてみました。 Sheet2のB2セルに =IF(OR($A2="",COUNTIF(Sheet1!$A:$A,$A2)<COLUMN(A1)),"",INDEX(Sheet1!$B$1:$B$1000,SMALL(IF(Sheet1!$A$1:$A$1000=$A2,ROW($A$1:$A$1000)),COLUMN(A1)))) これは配列数式になってしまいますので、この画面からコピー&ペーストしただけではエラーになるか、ちゃんと表示されないと思います。 B2セルに貼り付け後、F2キーを押す、または貼り付けセルでダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをオートフィルで列方向と行方向にコピーすると画像のような感じになります。 以上、参考になれば良いのですが 他に良い方法があればごめんなさいね。m(__)m
お礼
早速の回答ありがとうございます。これから式の分析をしたいと思います。
VBAとかで組めば可能だと思いますが。
お礼
うまくできました。ありがとうございます。ただ式の意味はまだ複雑すぎて理解できていません。これからじっくりと解析したいと思います。