- ベストアンサー
エクセル関数で飛び飛びのデータの値を表示したい
こんにちは。お世話になります。 エクセル(2000)で質問です。 ある表があり、一番左の列にはインデックス(仮にB列とします)、 2列目(C列)には日付、3列目(D列)には値が入っています。 イメージだと A B C D 1 コーラ 5/30 20 2 6/10 10 3 6/11 20 4 ミルク 4/30 10 5 5/11 35 のような感じです。(セルは結合されてません) データベースとして扱うならば、B2にもコーラという値が 入っている、という認識ですが、実際は空白セルとなっています。 そこで、A列に、Bのインデックスの値を入力したいのですが、 どのようにしたら良いのか悩んでいます。 上記で言うと、A1~A3にはコーラ、A4~A5にはミルク、という 値がはいってほしいです。 次のインデックスまでの空白セルの数は不規則です。 データの件数は何千件とかなり多いので、関数で一気に出せると 非常に助かります。 分かりにくい質問で申し訳ありませんがどうぞよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1行目からデータが始まっていますが、 1行目に空行を挿入できるなら A2 =IF(B2<>"",B2,A1) として以下下にコピーすればいいと思います。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
ポイントは、 (1)関数の良いところは、式の複写によって(、地が適当にづれて手くれることです。しかし飛び飛びに自動で複写はできません 。連続セルになります。 (2)値のあるセルに、関数式の複写ででも、式が入ると、値が壊れることです。 ですからB列(商品名列)に、質問の通りの値は、原理的にセット不可能です。迷いを吹っ切ってください。 VBAならできます。 それで作業列を別に使う必要があり、その列で、自分自身が空白で、前行の値が、空白で無い(こうなる)場合は前行の値を持ってくる という式にします。 スタートはB2にする。 D1にはB2を入れておく =IF(B2<>"",B2,D1) そしてB列に値を手操作で複写して戻します。
お礼
ありがとうございます。^^ 上の値を持ってくればいいことに気が付きませんでした。 B列に連続データを入れることが不可能なのは分かっていたので、 A列に連続データを入れられればと思っていました。 VBAの知識はあまりないので、関数で何とか・・・と思っていまして。 データベースとして使うならB列に全て値をいれておけよ!!と思ったのですが 出来ていないのを何とかしなければと焦っておりました^^; 助かりました~♪
- cak24890
- ベストアンサー率28% (19/67)
あまりスマートな方法ではありませんが、お急ぎのようなので、力技で回答します。 1行目はデータがあるようですので、無条件にB列のデータをコピーしておきます。 2行目にIF関数を用いて、=IF(B2<>"",B2,A1)と入力し、その後このセルを最下行までコピーすれば、お望みのセル入力が完了します。
お礼
ありがとうございます。ばっちりでした^^ 上の値を持ってくればいいことに気が付きませんでした。 助かりました~♪
- zap35
- ベストアンサー率44% (1383/3079)
テーブルが1行目からデータが格納されていると以下の方法は使えませんので、1行目にタイトル行を入れてください A1:INDEX B1:品名 C1:日付 D1:数量 のように何でも良いです その上でA2セルに =if(B2<>"",B2,A1) と入力し、そのセルを全行にコピーしてみてください。
お礼
ありがとうございます。ばっちりでした^^ 上の値を持ってくればいいことに気が付きませんでした。 助かりました~♪
お礼
ありがとうございます。ばっちりでした^^ 上の値を持ってくればいいことに気が付きませんでした。 助かりました~♪