Excelで空白セルのコピーペーストに注意が必要な理由と対策方法を解説

このQ&Aのポイント
  • Excelで空白セルをコピーペーストする際、元の式が入力されたセルも一緒に選択されてしまうことがあります。これは、データベースに読み込む際に問題を引き起こす可能性があります。
  • この問題を解決するには、特定の方法で空白セルを選択する必要があります。例えば、関数やVBAを使用して特定の条件下で空白セルを選択し、それをコピーペーストすることができます。
  • また、新規ブックを作成してからコピーペーストする方法もあります。これにより、元の式が入力されたセルが含まれない範囲を選択することができます。
回答を見る
  • ベストアンサー

Excel 空白セルのコピペについて

http://imgur.com/5e8TsP1 上記図のように、シート1のB列に各文字を入力しています。 そして、A列にはもしB列に文字が入力されていたらID代わりの数値を表示する、という式を入力してあります。 次に、シート1のA列、B列をコピーして、シート2に数値としてペーストをします。 すると、A列は空白のはずが、xldown操作をすると元のセルで式が入力されていたものまで選んでしまい、真の空白セルとして認識してくれません。 そこで、このような例の場合、どうコピーペースト、または選択をすれば偽物の空白 セルを生み出さないように出来るでしょうか? 実際に使用するデータは項目名が多く存在し、マクロですべてのセルを選択→新規ブックを作成してそこにペースト、という処理を行っています。 この時に偽物の空白セルが出ると、データベースに読みこむ際に不都合が生じますので、何とか改善を図りたいです。 VBA、関数、Excel上のテクニックのいずれでも構いませんので、どうかご教授下さい。 よろしくお願いいたします。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8516/19358)
回答No.1

以下のマクロは「見た目が空白の、ブランクじゃないセル」をクリアして、ブランクのセルにします。 Sub Macro1() Dim Target As Range For Each Target In ActiveSheet.UsedRange If Not IsNull(Target) And Target.Formula = "" Then Target.ClearContents End If Next End Sub なお「半角スペースや、全角スペースなど、見えない文字が入っている場合」はブランクにしません。

boly93
質問者

お礼

ありがとうございました。 uesdrangeをどう使うか迷っていたのですが、ご回答いただいたやり方で問題なく出来ました。 また是非、よろしくお願いいたします。

その他の回答 (2)

  • emaxemax
  • ベストアンサー率35% (43/121)
回答No.3

こんな方法もあります。 仮にA1:B10の範囲なら Sub test01() Dim myW myW = Sheets("Sheet1").Range("A1:B10").Value Sheets("Sheet2").Range("A1:B10").Value = myW End Sub

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは Sub test()   Worksheets("Sheet1").Range("B:B").SpecialCells(xlCellTypeConstants) _     .Offset(, -1).Resize(, 2).Copy   Worksheets("Sheet2").Range("A1").PasteSpecial xlValues End Sub とか Sub test1()   Dim r As Range   With Worksheets("Sheet1")     Set r = .Range("B" & Rows.Count).End(xlUp)     .Range("B1", r).Offset(, -1).Resize(, 2).Copy   End With   Worksheets("Sheet2").Range("A1").PasteSpecial xlValues End Sub ではどうですか?

関連するQ&A

  • エクセルで数式が入ったセルを空白にしたい。

    エクセルで数式が入ったセルを空白にしたい。 A1に"100"と言う数字、 B1はA1と同じ数値を自動入力させているので"=A1"という式が 入ってます。このB1の数式をB2からB10までコピーしているのでA2からA10に入力した数値が 反映されます。しかしA列にはいつも数値が入力されているわけではなく空白にする場合もあります。 でもB列の数式はコピーされてるので"0"が残ります。 そこですべて入力終了後にこのB列に自動で入力された"0"を削除したいのですが 置換で"0"にしても入ってるのは数値じゃなくて数式なので該当なしになるし、 数式も列ごとに移動されてるので一定ではありません。 この"0"を一括で削除するにはどうすればいいでしょうか? 入力範囲は500行まで及ぶのでいちいち"0"を探して削除するのが大変です。 分かりにくい質問ですいませんがよろしくお願いします。

  • エクセルで数式が入ったセルを空白にしたい。

    エクセルで数式が入ったセルを空白にしたい。 A1に"100"と言う数字、 B1はA1と同じ数値を自動入力させているので"=A1"という式が 入ってます。このB1の数式をB2からB10までコピーしているのでA2からA10に入力した数値が 反映されます。しかしA列にはいつも数値が入力されているわけではなく空白にする場合もあります。 でもB列の数式はコピーされてるので"0"が残ります。 そこですべて入力終了後にこのB列に自動で入力された"0"を削除したいのですが 置換で"0"にしても入ってるのは数値じゃなくて数式なので該当なしになるし、 数式も列ごとに移動されてるので一定ではありません。 この"0"を一括で削除するにはどうすればいいでしょうか? 入力範囲は500行まで及ぶのでいちいち"0"を探して削除するのが大変です。 分かりにくい質問ですいませんがよろしくお願いします。

  • EXCELで式での空白セルの挿入方法

    A列は空白行で、B列は数値が入っていたり空白だったりする行で構成されています。 またC列からD列までの全ての行には数値が入っています。 この時A列に条件付き数式を入力して、B列が空白でなければB列に空白セルを挿入して現B列からD列を右にシフトさせたいのですが、数式で可能でしょうか? 数式で可能ならばA列に入力する式を、不可能なら参考のためVBAでの記述をお教え頂けると嬉しいです。(VBAはあまり理解しておりませんが。) 例 【処理前】 A列 B列 C列 D列 E列     22   33  44          55  66     77   88  99         100  101 【処理後】 A列 B列 C列 D列 E列 式       22  33  44 式       55  66 式       77  88  99 式      100  101 2万行の処理を1回のみしたいです。 宜しくお願いします。

  • Excelでの空白セルを除いた引き算

    Excel2007を使用しています。 A列にどんどん増えていく数値(増加量はランダム)が入力され、B列に1つ上の数値を引いた値を計算式で出したいのですが、A列にはたまに空白が入ります。 A列   B列 50    100     50 (←100-50) 160    60 170    10 (←170-160) 200    30 このような感じにしたい時にB列に入力する式が分かりません。 初歩的な質問かもしれませんが、よろしくお願いします。

  • エクセルの空白を求めたいのですが。

    エクセルの空白を求めたいのですが。 例えば、 ・・A B C D E 1 4 2 3 8 4 5 6 4 7 8 9 2 10 A列の数字入力があるセルから、次のセルの入力値まで の空白の個数を関数で出来ますでしょうか? A9~A6 は空白が2個となります。 A6~A3 は空白が3個となります。 A列の 各行 には他のセルで計算された値を出しているので、 各行に現れる数値は、その時によって違います。(現れる数値は整数です) わかる方いましたら、宜しくお願いします。

  • EXCEL 数式が入った空白セルを数える

    毎度お世話になっています。 質問の内容ですが、例えば下記のようなシートがあるとします。 セルB1、セルC1、セルD1:手入力セル セルA1:数式「=IF(B1="","",B1+C1)」 セルA2:文字列 セルA3:数式「=IF(D1="","",D1*0.1)」 セルA4:文字列 セルA5:A1+A3の計算結果を表示 (※なお、セルA2、A4は数値が入らない) というような場合において、 ●セルB1、C1、D1になにも入力されていない場合、セルA5が空白となる。 ●セルB1、C1にのみ数値が入力されている場合、セルA5の計算結果がセルA1の値のみ。 ●セルD1にのみ数値が入力されている場合も上記と同様に計算結果が表示される。 以上の条件を満たす数式をセルA5に入力したいのですが、 COUNTBLANKは数式が入っている場合には使えず、COUNTAの場合だとセルA1、A3のどちらにも数値が入った場合に表示される、といった数式になります。 IFをいくつも使えば可能とは思いますが、もう少し単純に数式を作れたらと思い質問をさせて頂きました。 よろしければ御回答宜しくお願い致します。 (内容を訂正したため、いったん質問を削除しました。もし御回答中の方が居ましたら申し訳ありませんでした。)

  • エクセルの空白セルの選択

    こんにちは いつもお世話になっています。  エクセルの空白セルの選択について教えてください。 A列、B列にデータがあります。それぞれの列で空白セルがありますが、同じ行で両列ともに空白のセルだけを選択する方法を教えてください。  単に「ジャンプ」から空白セルを選択すると片方にデータがある行のセルも選択してしまいます。片方にデータのある行は残し、両列ともに空白の行を削除したのです。  よろしくお願いします。

  • 見た目空白セルの対処について

    エクセル上でA列に関数が入っていて、A列を値複写でB列にコピーしたケースについて B列上で空白のセルを選択しようとして「編集」→「ジャンプ」→「セルの選択」 →「空白のセル」の操作を行うと、該当なしとなってしまいます 空白部分のセル上で「Del」キーを操作したあと再度「編集」→「ジャンプ」→「セルの選択」→「空白のセル」の操作をしたところそのセルが選択されました ので、見た目は空白でも実際は空白でない状態になっていると思われます B列上の見た目の空白セルが部分部分にあるため、1つ1つ「Del」キー操作をするには大変な労力がいります。 簡単にB列上の見た目空白セルを選択する方法はないでしょうか

  • エクセルでセル移動について

    エクセルのA1からD10の表に縦に数値を入力します。 各列によって空白のセルがあります。 A列の入力が終わればB1に、B列の入力が終わればC1に セル移動するにはどうすればいいでしょうか? (空白セルがあるため、Ctlキー+↑キーでは上手くいきません。) 教えて下さい。よろしくお願いします。  

  • エクセルにて空白セル~合計セルに小計を差し込むには?

     仕事で下記のような横に長い一覧シートを使用しております。日によって列数の変動が大きく、列数が増えると印刷設定を変えてページ数を少なくしています。表が見にくくて申し訳ないのですが、数値0のセルは実際は空白です。  標準では下記形式のままで、合計及び各セルには数値データーが入っていますが、数式は入力されておりません。     A  B  C  D  E  F ~   BG   道具 型A 型B  型C 型D 型E 合計  1 畳  19  0   0  11  8~    156  2ドア  32 12    0  0  11~   93   3 鏡  0  25   18  0  0~    67  4建具 34  26   34  0  0 ~   112  5台所  8  0    0   20 6 ~   58  6座卓  0  0    43  22 0 ~   219  7 襖  30 23   25  30  0~    186  8欄間  4  32   0   0  24~    93  9照明  0  14   8   0  0 ~    72 10風呂  7  6    0   0  45~    95  横長の時、0の空白セルに連続する各データーセルをCTRLキーを押しながら、Σで小計を手動で出しているのですが、手作業では追い付きません。  B列を基点として、各行の連続しているデーターセルを0の空白セルの所に小計を簡単に出すにはどうすればよいでしょうか?  簡単に言いますと『B2>0かつC2>0でE2=0あればB2+C2を行う、E2>0ならB2+C2+E2を行う』次に空白0セルがあれば、それまでの小計を表示する、と言うようにしたいのですが、教えていただけないでしょうか?簡単に式をコピーできると言いのですが、  

専門家に質問してみよう