dポイントプレゼントキャンペーン実施中!

アクセスからエクセルの表をインポートする作業があるのですが、インポートした際、エクセル側に「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

  

A 回答 (6件)

エクセル側で、該当のシートを開き、


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

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

お礼日時:2008/12/12 15:06

#5です。


Nullでしたね。

If rngW.Value = 0 Then rngW.Value = Null
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/12/12 16:10

範囲固定で。


---
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
    • good
    • 0

コピペする前に0を空白に置換するのが最良と思いますが


Access側の該当項目は数値なのでしょうか
数値ならAccess側の表示を考慮されたほうが良いと思います。

DB上のNullの扱いは特殊なので演算やSum関数などの集計関数を使うと答えがNullになるなど弊害がおき易くなりますので
    • good
    • 0
この回答へのお礼

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

コピペのVBAの前に0置換するようにやってみます。(正直「何故前なのか」まだ理由がきちんとわかっていないのですが・・・)
ありがとうございました。

お礼日時:2008/12/12 15:38

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/12 15:11

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/12 13:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!