• ベストアンサー

エクセル 範囲 にある「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

  • ★エクセル VBA 指定された範囲の空白セルに0(ゼロ)を代入したい。

    ★エクセル VBA 指定された範囲の空白セルに0(ゼロ)を代入したい。 範囲は ”セル範囲”という名前で取得しましたが、その中にデータの入っていない 空白のセルに0を代入したいのです。 xlCellTypeBlanksを使うといいのでしょうか? 会社でのデータ処理で必要なので困っています。 初心者なのでよろしくお願いいたします。

  • Nullではない空白の一括削除

    アクセスのテーブルをエクセルに貼り付けると、空白のようでも何か入っているようです。 countaでカウントすると一見空白でも、セルの数分カウントされます。 この空白を一挙に削除するにはどうしたらよいでしょうか。 よろしくお願いします。

  • エクセルの表でデータを入力する際に一括して空白セルに数字の0を入力したい

    エクセル2002を使用しています。 エクセルでデータを入力する際に、空白のセルに一括して数字の0を入力する方法を教えてください。

  • アクセス2007で空白行がインポートされてしまう

    いつもお世話になっております。アクセス超初心者なので、よろしくお願いします。 アクセス2007を使用してエクセルデータをインポートすると、空白行が大量にインポートされてしまいます。 エクセルの元データで最終行を調べてみると(Ctrl End)、インポートされた空白行が最終行(最終セル)になっていますが、データは何も入れていませんし、文字も何も入っていません。 エクセルのスクロールバーが、空白行の所まで伸びていて、スクロールバーで表示できるギリギリのセルまでインポートされているようなのです。 どうしたら、空白行をインポートせず、エクセルの最終セルもデータの最終セルに設定できるのでしょうか? よろしくお願いします。

  • エクセル2010で、空白セルを左詰めしたい

    エクセル2010を使用しています。 VBAで以下の操作を実行したいと考えていますが、 初心者につき、ご教示いただけないでしょうか。 60万行くらいあるエクセルの表(CC列まで)で、 空白セルを左詰めしたいのですが 範囲指定(空白へのジャンプ)機能をするだけで固まってしまい 何度も操作が止まってしまい困っています。 VBAでスムーズに操作することができればと思うのですが・・・ よろしくお願いします!

  • EXCELで広い範囲のセルに簡単にコピーする方法

    EXCEL2003で大き目のデータを取り扱っています。 たとえば、A1のセルの内容をA1000まで簡単に一括コピーする方法はないでしょうか? いま、A1をコピーしてA2:A1000でマウスを動かして範囲指定しながらコピーしていますが、範囲指定する時間がわずらわしく感じます。 EXCELのワザでも、VBAでもどちらでもいいので教えて下されば助かります。

  • EXCEL VBA 空白行を含んだ範囲選択

    EXCEL VBA超初心者です。 EXCELのVBAについての質問です。 以下のような、日ごとのお金の貸付、返済の一覧データがあります。 例 A B C D E 1 年  月 日 貸付  返済 2 2008 5 10 10000 3 2008 6 10      8000 4 2008 7 10 20000 5 2008 8 20      7000 ・データの行数は決まっていません。 ・最後の行が「貸付」で終わることもありますし 例のように「入金」で終わることもあります。 ・各データには必ず「年」「月」「日」が入力してあります。 VBAで、A2セルからE5セルを範囲選択するには どのように記述したらいいですか? ちなみに自分で色々と調べてみて Selection.SpecialCells(xlCellTypeConstants, 23).Select としたのですが それだと空白セル(例でいうとE2やD3セル)が選択されず とびとびになってしまいました。 ご教授お願いいたします!

  • エクセルVBAで範囲指定の方法をおしえてください

    エクセルVBAで範囲指定の方法をおしえてください こんばんは。 以下のようにデータがあるとします。 222 111 333 555 888 999 454 665 222 111の文字列を含むセルから888の文字列を含むセルまでをVBAで範囲指定したいのですが 方法がわかりません。 エクセルに読み込むファイルによって目的の情報の位置が変わるため、文字列を基に範囲指定したいのです。 本当に困っていますよろしくお願いします。

  • エクセルで空白セルを寄せたい

    エクセル2002使用です VBAは使わずに関数だけで空白セルがあるセルを詰めて表示したいのですが・・・   A|B|C|D|E|F|G 1 あ い う え お か き 2 ○   ○ ○   ○ の表を   A|B|C|D|E|F|G 1 あ う え か  2 ○ ○ ○ ○ のように表を書き換えたいのです。 1行目には必ず文字が入力されています。 2行目には入力されているセルと空白セルが不定期に入力されています。 2行目のセルが空白ならば、1行目のセルも削除して左へ詰めて 表を転記したいのです。 よろしくお願いします。

  • ExcelをAccess(VBA)にインポート

    お世話になります。 VBAによるExcelのインポートにつきましてご教授願います。 あるExcelファイルがあり、それをAccessにてインポート したいと考えております。 通常の表であれば、インポートすることは可能なのですが、 その表の上数行に表名や氏名があったり、見出しが2行に なっていて、片方が結合されるような状態です。 xxxx表                    ←表名 氏名:○○○○               ←氏名                          ←空白行                          ←空白行     上期         下期      ←セルが結合されている No A  B    金額  E  F  金額←ここを見出しとして 1                       インポートしたいところ 2 3 ※A~F及び金額にはそれぞれ値が入ってます。 このようなExcelファイルをVBAにてインポートすることは 可能でしょうか? それとも、ある程度はExcel上で加工する必要があるので しょうか? 宜しくお願い致します。

専門家に質問してみよう