![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんにちは。
エクセルで特定の条件にマッチするセルの隣のセルの文字列を別シートに抽出したいのですが、
どの関数を使えば良いか分かりません…。
ご存知の方がいらっしゃいましたら、ご回答頂ければ助かります。
※シート1に以下の様に入力されているとして、B列が「0」の隣のセル(A列)の文字列をシート2に抽出したいと思っています。
【シート1】
A B
1 [鈴木] [0]
2 [佐藤] [5]
3 [高橋] [0]
↓
【シート2】
A
1 [鈴木]
2 [高橋]
※佐藤は「5」なので抽出しない。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
1つの関数で目的の処理が出来るものはありませんので、幾つかの関数を組み合わせて1つの数式を構成します。
Sheet2の1行目から下へ抽出するときは次の数式で良いと思います。
=IFERROR(INDEX(Sheet1!A$1:A$3,SMALL(INDEX((Sheet1!B$1:B$3=0)*ROW(B$1:B$3),0),COUNTIF(Sheet1!B$1:B$3,">0")+ROW())),"")
Excel 2007以降のバージョンで再現できるはずです。
処理対象は元データがA1からB3までになっていますのでデータの行数に合わせて数式の行番号を変更してください。
尚、入れ子構造のINDEX関数で内側はSMALL関数に与える配列値を加工するためのものであり、他の方法でも処理可能です。
基本的には次の数式になります。
=IFERROR(INDEX(Sheet1!A$1:A$3,SMALL((Sheet1!B$1:B$3=0)*ROW(B$1:B$3),COUNTIF(Sheet1!B$1:B$3,">0")+ROW())),"")
この数式は計算過程で関数に与える値が配列値を扱うため数式バーへ入力後、Ctrl+Shift+Enterで確定しなければなりません。
確定後に数式バーの表示が数式全体を{}で括られた状態になります。
貼付画像はExcel 2013で検証した結果です。
D列がSheet2と等価の状態にしてありますので試してください。
![「条件に合致する文字列を別シートに抽出する」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/d/1229070_5497e74968131/M.jpg)
No.4
- 回答日時:
Sheet1!D1: =IF(AND(B1<>"",B1=0),ROW(),"")
Sheet2!A1: =IF(ROW()>COUNT(Sheet1!D:D),"",INDEX(Sheet1!A:A,SMALL(Sheet1!D:D,ROW())))
![「条件に合致する文字列を別シートに抽出する」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/0/298588_5497e74a0b1e8/M.jpg)
No.3
- 回答日時:
1つの式で表示するなら、以下の式を入力して下方向にオートフィルコピーしてください。
=INDEX(Sheet1!A:A,SMALL(INDEX((Sheet1!$B$1:$B$100>0)*1000+ROW($1:$100),),ROW(1:1)))&""
ちなみに、Sheet1のデータ範囲が1行目から100行目のセル範囲にない場合は、$B$1:$B$100と$1:$100の数字だけを変更してください(数式が重くなるので必要以上に範囲を広げないこと)。
No.1
- 回答日時:
非常にしばしば寄せられるご相談の一種ですが、エクセルには「条件に合致する一連の結果を列記してくれる関数」は有りません。
(他のソフト、たとえばGoogle SpreadSheetなど、にはそういう便利な関数が用意されているものもあります)とは言え今はエクセルのお話なので。
方法1:簡単な方法 添付図参照
B列に名前
C列に数字、ただし簡単のためゼロじゃなく「1」を記入したデータを抽出する
A1には
=IF(C1=1,COUNTIF(C$1:C1,C1),"")
以下コピー
シート2のA1:
=IF(ROW(A1)>MAX(Sheet1!A:A),"",VLOOKUP(ROW(A1),Sheet1!A:B,2))
またはエクセル2007以降をご利用の場合は
=IFERROR(VLOOKUP(ROW(A1),Sheet1!A:B,2,FALSE),"")
以下コピー
方法2:イミフメイな方法
A列に名前
B列に数字、ただし簡単のためゼロじゃなく「1」を記入したデータを抽出する
シート2のA1:
=INDEX(Sheet1!A:A,SMALL(IF(Sheet1!B$1:B$99=1,ROW(Sheet1!B$1:B$99),9999),ROW(A1)))&""
と記入、必ずコントロールキーとシフトキーを押しながらEnterで入力、以下コピー。
![「条件に合致する文字列を別シートに抽出する」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/7/1223049_5497f208cdec6/M.jpg)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Excel(エクセル) エクセル関数について 8 2023/06/28 17:04
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) Excelの文字列を転記したいのですが。 2 2022/09/30 12:09
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
在庫管理表に使うエクセルの関...
-
下記マクロでMsgBox "空白です...
-
REGEXREPLACE関数について、
-
エクセルでバーコード作成し使...
-
【マクロ】for next構文について
-
ユーザー定義関数をアドイン登...
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
エクセルで表
-
PDFの請求明細をエクセルにしたい
-
エクセルの関数について教えて...
-
Excelデータをコピペして、ペー...
-
スプレッドシート、Excelでの数...
-
LOOKUP関数を使えばいいのでし...
-
Excel VBについての質問です。
-
【マクロ】 IFERROR関数をマク...
-
エクセル日付 文字列の関数がエ...
-
【マクロ】読取専用のファイル...
-
【マクロ】その時、その時で変...
-
時間によってファイル名が変わ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報