- ベストアンサー
[エクセル] セルが空だったら一つ上のセルを自動入力する
こちらには困ったときにいつもお世話になっております。 今回もよろしくお願いいたします。 EXCEL2002にて、セルが空だったら一つ上のセルを自動入力するようにしたいのです。状況といたしましては、ある個人情報管理アプリケーションが、吐き出すCSVファイルがあります。それが、困ったことに一人の人に複数の情報がある場合、個人情報ナンバーを省略します。わかりずらいと思いますので、以下の表をご覧ください。 個人情報ID 電話番号 0001 01-2345-1111 0002 01-2345-2222 01-2345-2223 0003 01-2345-3333 01-2345-3334 01-2345-3335 01-2345-3336 0004 01-2345-4444 以上のような表になります。そこで、「0002」の下の空のセルにも0002。「0003」の下の3つの空のセルすべてに0003を自動的に入力できるようにしたいのです。各々コピーしていけば何とか埋まるのですが、データ量が多くかなり時間がかかってしまいます。 解決方法をご存知の方がいらっしゃいましたら、お力添えの程、よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは ・A列の対象範囲を選択 ・編集 ジャンプ セルの選択 「空白セル」にチェック ・数式バーに =An(注) と入力後 [Ctrl]を押したまま[Enter] で入力確定 セル行(n) はアクティブセルの直上セル行値です 対象セル(空白セル)が選択された状態で1箇所だけ 反転していないセルがアクティブセルです。 例えば以下の場合 A4がアクティブセルになっている筈なので =A3 と なります。 A B 1 個人情報ID 電話番号 2 0001 01-2345-1111 3 0002 01-2345-2222 4 01-2345-2223 5 0003 01-2345-3333 6 01-2345-3334 7 01-2345-3335 8 01-2345-3336 9 0004 01-2345-4444
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
私は#2のご回答がスマートと思います。 #2のご回答の方式でやっていることが理解が難しいかもしれないので、私なりの別説明を加えてみます。決してご回答者のご説明が判り難いというのではありませんのでご理解をお願いします。 いま例えばA1に1、A4に2、A6に3が入っていて、 A2,A3、A5、A7は空白とします。 空白セルに直前セルの値を順次セットしたいわけです。 (1)CTRLキーを押しつつセルをクリックすると、飛び離れたセルを選択出来ることをご存知でしょうか。 それでA2,A3、A5、A7をクリックします。 (2)アクチブセルはA7になっていますが、CTRLキーを押したままA2をクリックします。これでA2がアクチブセルに なります。 (3)A2セルに数式バーから=A1をいれます。 (4)指定した(1)のセル全部に式を(相対的に)複写するためCTRLキーを押しながらEnterキーを押します。 CTRLキーを押してないとA2セルにしか式が入りません。 するとA2,A3、A5、A7に式が複写されます。 (5)(1)でセルを1つづつクリックするのは、数が 多いと大変なので、編集-ジャンプ-セル選択-空白セル-OKで空白セルを自動的に全部探す機能を(1)の段階で使うのです。 (6)すなわちa.空白条件の飛び飛びのセルを全て1度に選択する. b.選択したセル全部に相対的に変化させた式を設定する機能(CTRL+ENTER)の2つが使われています。
お礼
ご回答頂きまして、ありがとうございました。 大変勉強になりました。今後も何かありましたら、 よろしくお願いいたします。
- kazuhiko5681
- ベストアンサー率49% (79/159)
初めまして。サンプルマクロを作ってみました。下記のコードをコピー&ペーストするだけで、他の作業を(#1・#2のような)せずに貴方様の思い通りの動作を実行させることができます。下記の様に操作してみて下さい。 1.データの入っているブックを開く。 2.Sheet1にコマンドボタンを1個配置する。 ・ファイルメニューにマウスポインターをあわせて右クリックし、出てき たプルダウンメニューのVisual Basicをクリックする。 ・出てきたツールバーの右から3番目(コントロールツールボックス)をク リックし、コントロールツールボックスの一番右側の上から2番のコマ ンドボタンをクリックし、シートの適当な位置でクリックする。 ・ツールバーの2番目(デザインモード)のボタンが押された状態になって いたらそのボタンをクリックしてOFFの状態にする。 3.ALT+F11を押してVBE画面を立ち上げ、VBAProjectと書いてある下のSheet1の部分にマウスポインターをあわせてダブルクリックし、右側の白い部分に下記のコードをコピー・ペーストする。 4.ALT+F11を押してシート1の画面に戻り、データを入力後コマンドボタンを押す。 Private Sub CommandButton1_Click() For i = 2 to Cells(Rows.Count,1).end(xlUp).Row If cells(i,1).value = "" then Cells(i,1).Value = Cells(i,1).Offset(-1,0).Value next i お試しになってみて下さい。
お礼
ご回答頂きまして、ありがとうございました。 大変勉強になりました。今後も何かありましたら、 よろしくお願いいたします。
- taisuke555
- ベストアンサー率55% (132/236)
VBAですが・・・ 1、[Alt]+[F11]を押す。VisialBasicEditerに変更されます。 2、左上にプロジェクトと書いてある中に、 VBAProject(現在のブック名) └Microsoft Excel Objects ├Sheet1 ・・・ └ThisWorkbook とあると思うので、ThisWorkBookをダブルクリック 3.以下のコードを貼り付ける ***************************この下から***************************** Sub Data_Chk() For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If (Cells(i, 1) = "") Then Cells(i, 1) = Cells(i - 1, 1) End If Next i End Sub ***************************この上まで*************************** 4.[Alt]+[F11]を押す。Excelに戻ります。 5.コメントを挿入したいセルを選択する。 6.「ツール」→「マクロ」→「マクロ」→「ThisWorkbook.Data_Chk」を選択し、実行 いつも同じブックで処理を行うならば、上の方法でできます。 違うブックの場合、個人マクロとして登録する方法もありますので、分からなければ、補足してください。 うまくいかないときにも、補足していただければ、私のわかる範囲で回答します。
お礼
ご回答頂きまして、ありがとうございました。 大変勉強になりました。今後も何かありましたら、 よろしくお願いいたします。
- nek
- ベストアンサー率34% (46/135)
IF分を使えばできます。 やり方は色々ありますが 例えば、上記例題の場合(個人情報IDがA1の場合) 01-2345-1111の右のセル(C2)に =IF(A2<>"",A2,C1)という式を書けばOKです。 後はC1のセルをそのまま下にコピーすれば思い通りのデータができます。 Cにできたデータを個人情報IDへコピーすればいいと思いますが
お礼
ご回答頂きまして、ありがとうございました。 大変勉強になりました。今後も何かありましたら、 よろしくお願いいたします。
お礼
ご回答頂きまして、ありがとうございました。 大変勉強になりました。今後も何かありましたら、 よろしくお願いいたします。