プロが教える店舗&オフィスのセキュリティ対策術

Excel 2013 VBA
A列に16000行の数字が文字列として入っています。
これを数値型に変えたいのですが、一番早い方法はありますか?
今VBAでしている方法は、For nextで回して、セルのデータ型を数値型に変換→Aのセルの値を同じセルに入れなおすというやりかた

これは気が遠くなるほど時間がかかります。

教えていただけると非常に助かります。

A 回答 (2件)

こんにちは!


一例です。

Sub Sample1()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
With Range(Cells(1, "A"), Cells(lastRow, "A"))
.Value = .Value
.NumberFormatLocal = "G/標準"
End With
End Sub

※ 単に「文字列」となっているのであれば表示形式を「標準」にすれば大丈夫だと思いますが、
敢えて一旦「値」に置き換えています。(←これは無駄かも・・・)

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

これうまくいきました。こんなに簡単に素早くやれるんですね?

お礼日時:2015/06/26 22:30

外部データをインポートしたりすると数値が数字になってしまいイラつきますよね。


現在は VBA でやっているようですが、VBA 以外の方法でもよいのでしょうか?

【方法 1】
(テキストファイルをインポートするのであれば)
1. 外部データ ファイルの拡張子が csv なら txt に変更する。
2. Excel で開くときに [テキスト形式] のファイルに切り替えて上記のファイルを読み込む。
3. データをインポートするウィザードが動くので、当該列の形式を数値に指定する。

【方法 2】
別の列にいったん移す方法
問題の列が B列だとして、
1. 隣の C1 に 「=B1*1」 というように 1を掛ける計算式を仕込む。
2. C列を選択してコピーし、B列に値貼り付けする。

【方法 3】
方法 2 を別のアプローチで行う方法
1. 問題のセルの書式設定が「文字列」になっていれば「標準」に変更する。
2. まったく関係ないセルに数値の 1 を入力する。
3. そのセルをコピーする。
4. 問題のセルを選択する。
5. [ホーム] タブの [クリップボード] にある [貼り付け] の下の矢印をクリックして [形式を選択して貼り付け] を選択。 [演算] の [乗算] を選択して [OK] をクリックする。

【方法 4】
データの区切り位置ウィザードで一気に解決する方法
1. 問題のセルの書式設定が「文字列」になっていれば「標準」に変更する。
2. 問題の列が B列だとして、B列全体を選択する。
3. [データ] リボンの [データ ツール] タブにある [区切り位置] をクリックする。
4. 区切り位置指定ウィザードが起動する。
5. [次へ] ボタンじゃなく、いきなり [完了] ボタンをクリックする。

【方法 5】
Excel のエラー チェック機能で一気に解決する方法
1. 問題の列全体、または問題のセル群を選択する。
2. 選択範囲の右上にドッキリマークのアイコンが表示される。
3. アイコンをクリックして [数値に変換する] をクリックする。
    • good
    • 0
この回答へのお礼

ありがとうございます。VBA以外にこんなに沢山のやり方があるとは知りませんでした。今回はどれも試さなかったのですが、次回は、この方法を試してみたいと思います。またよろしくお願いします。

お礼日時:2015/06/26 22:34

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