• ベストアンサー

エクセル 範囲 にある「0」を一括して空白(NULL)にする方法について

アクセスからエクセルの表をインポートする作業があるのですが、インポートした際、エクセル側に「0」があるので「0」もインポートされてしまい困っています。エクセル側で「0」が入力された範囲のセルをVBAなど自動一括で空白セルにする方法を教えてください。 (アクセス側でインポートする際、「0」を無視する方法でもいいです) どうぞよろしくお願いします。   A,B,C,D,E,   データ1,データ2,データ3,データ4,データ5   1 5,4,4,3,0 2 3,2,3,4,4  3 5,4,3,0,0     4 0,0,0,0,0 5 0,0,0,0,0 ~ ~ 40 0,0,0,0,0   

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

  • ベストアンサー
  • snc35744
  • ベストアンサー率20% (8/39)
回答No.3

エクセル側で、該当のシートを開き、 全てセルを選択し、編集(E)→置換(E)で置換してからインポートしてはどうでしょう?  置換前の文字列に0を入れ、置換後の文字列に何も入れない  注1)オプションで「セル内容が完全に同一であるものを検索する」にチェックを入れる

chibaole
質問者

お礼

ありがとうございます!完璧です。オプションの件まで教えていただいたのでフィールド名で「質問9」「質問10」~「質問20」の0まで消えてしまっていたのを容易に防ぐことができました。

その他の回答 (5)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.6

#5です。 Nullでしたね。 If rngW.Value = 0 Then rngW.Value = Null

chibaole
質問者

お礼

ありがとうございます!見事に作動しました。当初一番お聞きしたかった回答でした。しかし「置換処理+マクロ記録」のVBAのほうが実行の処理速度が速いのでこちらでやってみたいと思います。(一方はシート全体と一方はセル範囲指定だからでしょうか・・・?? 範囲はA1:AF50を指定しました)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.5

範囲固定で。 --- Sub mChange() Dim rngC As Range Dim rngW As Range Set rngC = Range("A1:E40") For Each rngW In rngC If rngW.Value = 0 Then rngW.Value = "" Next End Sub

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.4

コピペする前に0を空白に置換するのが最良と思いますが Access側の該当項目は数値なのでしょうか 数値ならAccess側の表示を考慮されたほうが良いと思います。 DB上のNullの扱いは特殊なので演算やSum関数などの集計関数を使うと答えがNullになるなど弊害がおき易くなりますので

chibaole
質問者

お礼

回答ありがとうございます。この質問の背景は元データから計算式で引っ張り別シートに”数値でコピペ”した後の「0」処理について質問させていただいたのです。(元データが空白セルのときの0表示) この背景を想定して回答していただいたのであればするどいご指摘でびっくりしています。 アクセス側はテキスト型がほとんどですが、yes/no、数値もあります。 コピペのVBAの前に0置換するようにやってみます。(正直「何故前なのか」まだ理由がきちんとわかっていないのですが・・・) ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

編集→置換で検索文字列欄に0、置換文字列欄は未入力→すべて置換の操作をマクロ記録しておく方法は如何でしょうか。

chibaole
質問者

お礼

ありがとうございます!勉強になりました。おかげさまで希望の「0」を消すことが可能になりました。 (※最初、フィールド名にある0も消えてしまい、うまくインポートされなかったのですが、No3の方のアドバイスでオプション選択したら問題なくできました)

  • choco_jiji
  • ベストアンサー率31% (528/1701)
回答No.1

エクセルのオプションで、ゼロ値のチェックをはずしてはどうですか。

chibaole
質問者

お礼

回答ありがとうございます。すでに実施してみたのですが、エクセルでは表示はされなくなるのですがアクセスでは「0」を認識しインポートされてしまいます・・・。

関連するQ&A

専門家に質問してみよう