[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『空白を取り除く』(あちゃこ)
質問1 B列からBP列まで空白が入った文字列が、9万行にわたりびっしり詰まったデータが あります。 その空白を取りたいのですが、作業列を設けてTRIMで取るにしてもこれだけの大きな データでは厳しいです。できれば処理の早い方法を教えてください。
質問2 A列に、文字列が全角で入っているものを半角にしたいのですが、 この文字列も空白が入っており、空白除去を望みます。
A B BP 1 GS2 G231 G250 2 VG48 G220 G230 3 GS20 G180 G237 4 BS20 G060 G061
< 使用 Excel:Excel2010、使用 OS:Windows8 >
>質問1
ダメ元で。
あまり(というか全く)お勧めしませんが、 セル範囲をコピー ↓ メモ帳に貼り付け ↓ メモ帳上でスペースを空白(置換後の文字列には何も入れない)に置換 ↓ メモ帳をコピー ↓ エクセルに貼り付け
※実際には試してません。 (カリーニン) 2014/07/15(火) 21:36
B1:BP90000まですべてのセルにデータを入れて試しましたが出来ました。 ただし、若干時間がかかります。※PCの性能にもよります。 (カリーニン) 2014/07/15(火) 23:37
早い遅いは別にして試してみました ↓このデータをA1:BP90000に入力(入力時間が1分弱) V G 4 8 Vの前と8の後ろ、文字間に半角スペース
A:BPを選択して置換ボタンクリック 5分20秒で約15,000行まで置換を確認(名前ボックスで進捗状態がわかる) 待ちきれずタスクマネジャーから終了
↑このファイルをCSVにして同様手順 約15,000行まで約4分30秒 タスクマネジャーから終了
メモ帳貼り付けは5分待っても貼り付け完了せず これもタスクマネジャーから終了
結構厳しい作業です
10列くらいに分けて作業、を繰り返すのが少しは楽かもしれません ←チョット修正^^
(jun53) 2014/07/15(火) 23:41
エクセルのみ B1:BP90000まで選択されている状態で置換→15,000行までで6分36秒(ESCで終了)
エクセル+メモ帳 B1:BP90000をコピー メモ帳に貼り付け→59秒 メモ帳上で置換→1分9秒 メモ帳をコピー エクセルへ貼り付け→45秒
メモ帳ですと合計で2分53秒ほど(エクセルとメモ帳を行ったり来たりする時間は含めず)でした。
エクセルで書式など設定している場合の影響は考慮していません。 (カリーニン) 2014/07/16(水) 00:31
あれ? 別シートに関数じゃだめなの?
別シートのA1に=ASC(SUBSTITUTE(SUBSTITUTE(Sheet1!A1," ","")," ","")) A1をコピー。 A90000まで選択、ペースト。 →ペースト時間2〜3秒ほど
同じくB1に=SUBSTITUTE(SUBSTITUTE(Sheet1!B1," ","")," ","") B1のセル枠右下をダブルクリック(これでB90000まで数式がコピーされる) →ペースト時間1〜2秒ほど
B1からB90000まで選択された状態でコピー。 C1からBP1まで選択。 ペースト。 →ペースト時間20秒ほど
表全部を選択。元シートかこのシートか他のシートに値だけペースト。
俺のPCもそんなスペック良い訳じゃないと思うけど、こんなもんで。 どっちかというと計算式入れたままシート消す方が時間かかった(^^; 今度から計算式消してから、シート消すわ…
(1111) 2014/07/16(水) 09:16
下記のVBAで11万行チョイで私の環境だと約20秒ほど
Sub test() Dim s As Single s = Timer With ActiveSheet.UsedRange .Value = Evaluate("trim(" & .Address & ")") .Columns(1).Value = Evaluate("asc(" & .Columns(1).Address & ")") End With MsgBox Timer - s End Sub
(seiya ) 2014/07/16(水) 10:28
多数の回答ありがとうございます。 seiyaさんのVBAを例題でやってみるとすべてのセルが、A1のGS2になりました。 なぜでしょうか? (あちゃこ) 2014/07/16(水) 21:05
おっと、下記に変更
Sub test() Dim s As Single s = Timer With ActiveSheet.UsedRange .Value = Application.Trim(.Value) .Columns(1).Value = Evaluate("if(row(" & .Address & "),asc(" & .Columns(1).Address & "))") End With MsgBox Timer - s End Sub (seiya ) 2014/07/16(水) 21:42
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.