• ベストアンサー

エクセルについて質問

添付したエクセルの画像で、Bの「個数」はあらかじめ与えられていて、ランダムに1か2か空白が入ります。 この「個数」が2の場合のみAの番号をDのように2つ表示するようにしたいのですが、 関数でやる方法を教えていただきたいです。 よろしくお願いします。

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

  • ベストアンサー
  • not_ace
  • ベストアンサー率52% (35/67)
回答No.1

ものすごーく強引なやり方になりますが 質問時の画像に対応した関数を書きます。 必要に応じて列を変更してください。 まずD列2行目は必ず1になるので1を手で入力してください。 次にD列3行目に以下の式をそのままコピーしてください。 =IF(LOOKUP(D2,A:A,B:B)=0,D2+1,IF(LOOKUP(D2,A:A,B:B)=1,D2+1,IF(AND(LOOKUP(D2,A:A,B:B)=2,D2=D1),D2+1,D2))) 式を入力したセルを4行目以降にコピーすれば上手くいくと思います。 こういうのはマクロを実装したほうが何かと便利だと思いますが マクロではだめなのでしょうか?

buruburudool
質問者

お礼

できました。 ありがとうございました。 マクロは勉強不足でして、ソースコードとか教えてもらっても、セルの場所とか値を変えたときに自分で調整できない・・・と思うので。

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

お示しの例ではA2セルから下方に1から1000までデータがあるとしていますね。 作業列をA1001セルから下方に設けるとしてA1001セルには次の式を入力して下方に(A2001セルまで)オートフィルドッグします。 =IF(ROW(A1)>1000,"",IF(B2=2,A2+0.1,"")) その後にお求めのD列への表示ですが、D2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>COUNT(A:A),"",ROUND(SMALL(A:A,ROW(A1)),0))

buruburudool
質問者

お礼

参考になりました。 ありがとうございました。

関連するQ&A