エクセルの置換機能について

列で40列、行で3500行ぐらいのデータがあり、
そのうちの半分に値が、半分はブランクというデータがあります。そこから置換でブランクを”0”にするということをしたいのですが、処理するのに、
15~20分ぐらい掛かってしまいます。
置換ではなく、他にマクロ等でブランクセルのみを”0”にする良い方法はないでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2007/10/03 11:00:52
  • 終了:2007/10/10 11:05:04

回答(6件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912007/10/03 11:46:32

ポイント20pt

マクロの実装例です。

対象範囲を選択して実行してみてください。

Sub fillZero()
    Dim rng As Range
    For Each rng In Selection
        If IsEmpty(rng) Then
            rng.Value = 0
        End If
    Next
End Sub
id:hac20380

すいませんVB初心者なのですが、

例えば"K"列と"L"列を選択した場合の式は

どうなるのでしょうか?お願いします。

2007/10/03 12:03:48
id:kseikaku0801 No.2

清角克由回答回数18ベストアンサー獲得回数22007/10/03 11:50:39

ポイント20pt

ちょっと正攻法ではないかもしれませんが、以下の方法ではいかがでしょうか?

シートをコピーする。

元のシートのデータをCTRL+A等で全選択し、CTRL+C等でコピーする。

コピーしたシートの一番左上のセル上でマウス右クリックまたはメニューの編集の[形式を選択して貼り付け」を選び、その中にあるリンク貼り付けを選ぶ。

ブランク部分は0、それ以外の部分は元のシートの該当個所を参照する形になる。

コピー後のシートを再度全選択(CTRL+A)し、同じ場所に形式を選択して貼り付けで今度は値のみを選択する。

私の環境ですと、置換ではちょっと待たされましたが、上記のアクションをとれば、さほど時間はかかりませんでした。(40列×4000行くらいのデータでやったのですが、置換でも15分も待たされはしませんでしたが....)

id:rikuzai No.3

りくっち回答回数1366ベストアンサー獲得回数1412007/10/03 11:56:20

ポイント20pt

例示のようなファイルを作成して、

A1を選択

→Ctrl+Shift+End

→Ctrl+H→

「検索する文字列」をそのまま、置換後の文字列「0」で「すべて置換」

という手順で置換してみましたが、私のPCでは数秒で処理することができました。

WinXP、Excel2002、Pen4 2.4GHz 512MBの環境です。

環境がかなり劣るということでしたら、PCの処理能力のせいということもあると思います。


環境にあまり差がないようでしたら、

データ自体の問題も考えられます。

(実際のデータや環境がわからないのでなんとも言えませんが)


単に手法の問題ならばいくつか方法があります。


  • マクロ
    • 単純に↑の手順を記録しました。処理時間は一般機能で行うより早くなります。
Sub blank_0()

    Cells.Replace What:="", Replacement:="0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

End Sub

  • ジャンプと乗算貼り付け
    • 裏テクニック的です。他の処理にも応用がきくので覚えておくとちょっと便利です。

  • データ表の中の空欄セルの一つに「0」を入力してコピー
  • Ctrl+Gで「ジャンプ」を表示
  • 「セル選択」をクリック
  • 「空白セル」にチェックし、OK
  • 空白セルが選択された状態で、右クリック「形式を選択して貼り付け」の「乗算」にチェックしてOK

一瞬で0が書き込まれます。

これは複数のまとまっていないセルに対して同じ数字を加減乗除するのに便利です。

(例えば数字を全部1000で割って千円表示するなど)



以上ご参考まで。

id:hac20380

>「空白セル」にチェックし、OK

ここで”選択範囲が大きすぎます”とエラーに

なってしまいました・・・

2007/10/03 13:32:38
id:taknt No.4

きゃづみぃ回答回数13537ベストアンサー獲得回数11982007/10/03 13:00:47

ポイント20pt

以下の手順で できるかもしれません。

まず、

列で40列、行で3500行ぐらいのデータと同じだけの

エリアに 0を入れて用意します。

それをコピーし、

元のところで 右クリック、

形式を選択して貼り付け で

演算の箇所の加算を 選択し、OKとします。

すると 貼り付け分が すべて 0加算され

ブランクセルも 0になります。

文字列のセルは そのままです。

ただ、数式の箇所には +0 が 付与されますので

数式がある場合は、いまいちかもしれませんが。

id:hac20380

ありがとうございました。

結構いいかもしれません。

2007/10/03 13:18:37
id:kaiton No.5

kaiton回答回数260ベストアンサー獲得回数342007/10/03 13:18:40

ポイント20pt

#3のrikuzaiさんの回答に似ていますが..

  • Ctrl+Gで「ジャンプ」を表示
  • 「セル選択」をクリック
  • 「空白セル」にチェックし、OK
  • 0を入力し、Ctrlキーを押しながらEnterキー

3番目までは同じです。


マクロでは、

Selection.SpecialCells(xlCellTypeBlanks).Select

Selection.FormulaR1C1 = "0"

選択した範囲で上の操作をキー記録したものです。

環境にもよるでしょうが、数秒で終わると思います。

ブランクのセルが、空白が入力されているセルなのか、空っぽのセルなのか?

悩んだのですが、空っぽのセルとして回答しています。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 りくっち 1366 1298 141 2007-10-03 15:44:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません