- ベストアンサー
エクセル、同じ行の別の列の文字列を抽出する関数
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 一例です。 ↓の画像のようにSheet1のデータをSheet2に表示するようにしてみました。 Sheet2の1行目(日付)は入力済みだとします。 とりあえずSheet1のZ列の100行目まで対応できる数式にしています。 Sheet2のA2セルに =IFERROR(INDEX(Sheet1!$A$1:$A$100,SMALL(IF(Sheet1!$B$1:ZG$100=A$1,ROW($A$1:$A$100)),ROW(A1))),"") これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合はA2セルに針具家後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これを列・行方向にオートフィルでコピーで画像のような感じになります。m(_ _)m
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
No.1です! たびたびごめんなさい。 「お礼」書き込みの連絡メールが届いたので、再びこの画面を開いてみると 前回載せた数式の範囲指定に間違いがありました。 (タイピングミスです) もう一度数式を載せておきます。前回同様配列数式です。 =IFERROR(INDEX(Sheet1!$A$1:$A$100,SMALL(IF(Sheet1!$B$1:$Z$100=A$1,ROW($A$1:$A$100)),ROW(A1))),"") ※ Sheet1!$B$1:$Z$100=A$1 の部分で余計な「G」が入っていました。m(_ _)m
お礼
細かいところまで気を使ってくださり、ありがとうございます。 セルの範囲や番地は、当方のデータに合うように代入しましたので、問題ありませんでした。 IFERROR関数、INDEX関数、SMALL関数、ROW関数は今まで使ったことがなく、これらについて調べてなんとか式の意味がわかり、無事仕事のデータに応用することができる目途がたちました。本当に助かりました。 それにしても、エクセルはほんとになんでもできますね。
お礼
ありがとうございます!早速試してみたところ、完璧に実現できました。 それにしても、こんなに複雑な式になるのですね。それに私がほとんど使ったことのない関数ばかりの複合技で、こんな高度な式になるなんてビックリです。 いちおう自分で、COUNTIF関数やIF関数を組み合わせて、名前の行が決まった形ならなんとかできたのですが、それだと実際に運用する表では空白が多くなって名前が飛び飛びしまい実用的ではないので、どうやったら上のほうにまとめて表示できるんだろうと、かなり悩んでいました。 こんなに早くズバリの回答をいただけて感動です。いただいた式の意味や機能を調べて、他にも応用できるように勉強します!