• ベストアンサー

Excelのフィルタについて

いつもお世話になっております。 下記の様なExcelの表があります。     A   B   C   1 名前  注文品  2     りんご  3 青木     4   5     メロン  6 伊藤  7  8     りんご  9 上田 10 11     みかん 12 江藤 13 青木はりんご、伊藤はメロン、上田はりんご、江藤はみかんをそれぞれ注文します。 それぞれの人で3段づつ使用した表になっていますが、名前の段と注文品を入力する段が違っています。 この状態で注文品のところにフィルタをかけて「りんご」を選択すると     A   B   C  1 名前  注文品  2     りんご  8     りんご となります。これだと「りんご」は選択されるのですが、名前が出てきません。名前は3行目と9行目に入力してあるので出てこないのは当然なのですが、出てくるようにする方法は何かありませんでしょうか。 もし何か方法があれば教えて下さい。  

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

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

自称imogasi方式ですが 例データ A1:B14 (-はOKWAVEで表示桁ずれ防止のため入れたもので空白セル) 名前 注文品 - りんご 青木 - - メロン 伊藤 - - りんご 上田 - - みかん 江藤 - りんご 木村 ーー--- 指定品のリンゴを指定する、セルをD1とします。 リンゴと入力しておきます。 ーー どこか空き列で目立たない列に作業列として(今回はF列とします) F2に =IF(B2<>"",IF(B2=$D$1,MAX($F$1:F1)+1,""),"") と入れます。下の方向にデータのありえる最下行まで式複写します。 D2に =INDEX($A$2:$B$100,MATCH(ROW()-1,$F$2:$F100,0),2) といれて下方向に式を複写します。100(行)は、データのありえる最下行を見積もったものです。 E2に =INDEX($A$2:$B$100,MATCH(ROW()-1,$F$2:$F100,0)+1,1) を入れて下方向に式を複写します。 結果 りんご りんご 青木 りんご 上田 りんご 木村 #N/A #N/A #N/A #N/A ・・ となります。 #N/Aを出さなくするには、D列の場合は =IF(ROW()-1>MAX($F41:$F$100),"",INDEX($A$2:$B$100,MATCH(ROW()-1,$E$2:$E103,0),2)) とすればよい。E列も同じく前半部にIF文を加える。 またD2以下のりんごが、しつこいと思ったら、式を章楽してください。

pocket38
質問者

お礼

ご回答ありがとうございます。 このようなやり方があるとは思ってもみませんでした。 参考にさせていただきます。

その他の回答 (1)

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.1

これでいいのか分かりませんが…。 注文品とりんごの間にセルを1つ挿入すれば、 名前と注文品が同じ段になります。 (りんごのセルで右クリック、挿入を選択、下方向にシフト) その後にフィルターをかければ良いかと思います。 もしくは逆に名前と青木の間のセルを削除(上方向にシフト)ですかね。

pocket38
質問者

お礼

早速のご回答ありがとうございます。 実は質問のときには書いていなかったのですが、段を変えてしまうと他の項目に影響が出てしまうので、この方法では無理でした。

関連するQ&A

専門家に質問してみよう