• ベストアンサー

空白セルを飛ばしてデータをまとめるには

A列に 1 きゅうり 2 3 なす 4 5 6 7 かぼちゃ 8 9 10 11 トマト 12  :  : と入力されています。 これを、B列に空白を飛ばして 1 きゅうり 2 なす 3 かぼちゃ 4 トマト  :  : と持って来たいのですが、うまい方法はないでしょうか。 ただ、この空白セルは本当の空白ではなく、A列は =if(参照先が300円以下のもの,その野菜のなまえ,"") というような""が入っている状態です。

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

  • ベストアンサー
  • O_Denwa
  • ベストアンサー率26% (46/172)
回答No.2

関数式のVLOOKUPを使ってみてはどうでしょうか? 下準備として、 現時点で、A列に入っているデータを、 C列に移し、C1のセルには、『野菜』という項目名を入れます。 A列には、C列にデータが存在する場合、その通し番号を昇順に表示する式を入力します。 B列は、A列の順位を出すための累計として使います。 そして、空白を飛ばして表示する列をD列とします。 具体的には、 A列は下記のように入力します。 1 通し番号 2 =IF(C2<>"",B2,"") 3 =IF(C3<>"",B3,"") 4 =IF(C4<>"",B4,"") 5 =IF(C5<>"",B5,"")    :    : B列は下記のように入力します。 1 累計 2 =IF(C2<>"",1,0) 3 =IF(C3<>"",B2+1,B2) 4 =IF(C4<>"",B3+1,B3) 5 =IF(C5<>"",B4+1,B4)    :    : C列には、データが入っているので、そこは飛ばし、 最後に、空白をつめて表示するD列は、 1 並び替え 2 =VLOOKUP(1,$A$1:$C$11,3) 3 =IF(VLOOKUP(2,$A$1:$C$11,1)=2,VLOOKUP(2,$A$1:$C$11,3),"") 4 =IF(VLOOKUP(3,$A$1:$C$11,1)=3,VLOOKUP(3,$A$1:$C$11,3),"") 5 =IF(VLOOKUP(4,$A$1:$C$11,1)=4,VLOOKUP(4,$A$1:$C$11,3),"")    :    : (※今回、データが表示される最後を、10レコード分の、11行目とさせてもらいました。 データが表示される、最終行が11行目以降になる場合、 D列のVLOOKUP式の範囲で指定されている$C$11を変更してください。) という感じです。 もーちょっと、すっきりさせたかったのですが、他に思いつきませんでした(汗

uhyohyohyo
質問者

お礼

O_Denwaさん、ありがとうございました! 出来ました! =VLOOKUP(1,$A$1:$C$11,3) は =VLOOKUP(1,A:C,3) として一気にA列~C列全体にしちゃいました。いやあ、めんどくさい方法ですね。もっと簡単に出来る初歩的なことだとばかり思っていたものですので。考えていただいて本当にありがとうございました。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ・一番上の行(A1)に項目行(例えば"野菜名")を追加 ・A1~Axでオートフィルタを設定 ・A列("野菜名")で"空白以外のセル"を選択 ・フィルタリングされたデータをコピー ・フィルタを解除して、B列に貼り付け

uhyohyohyo
質問者

お礼

maruru01さん、回答ありがとうございます! なるほど!できました! ・・・ただ、欲を言えばAに次々とデータが追加されていったときに自動的にBにも入っていくようにしたいのですが・・・ そんな方法はないでしょうか?

関連するQ&A

専門家に質問してみよう