5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

EXCEL97:半角を全角に高速処理したいんですが、、、

1 :tmp:2000/04/19(水) 11:16
VBAで一つづつ変換してるのですが、あまりにデータ量が多すぎる
ため、処理時間がかかりすぎてしまうので、置換でどうにか出来ない
物かと考えたんですが、、、
VBAでも高速処理できるなら一向に構わないので、どなたか分かる方
いらっしゃいましたら教えてください。
ちなみに現在の処理方法はこんな感じです。

Function Zenkaku()
Dim i
Dim f
Dim HStr(2)

HRow = RowCheck()'行数を取得

For i = 2 To HRow
For f = 0 To 1
Cells(i@` f + 2).Activate
HStr(f) = StrConv(CStr(ActiveCell.Cells.Value)@` vbWide)

ActiveCell.Cells.Value = HStr(f)
Next f
Next i

End Function

2 :>1:2000/04/19(水) 20:01
>For f = 0 To 1
>Cells(i@` f + 2).Activate
>HStr(f) = StrConv(CStr(ActiveCell.Cells.Value)@` vbWide)
>ActiveCell.Cells.Value = HStr(f)

いちいちactivateしているから遅いんじゃないの。

For f = 2 To 3
Cells(i@` f)=StrConv(CStr(Cells(i@` f))@` vbWide)

この方が命令数少なくて速いはず。

けど置換の方が速いと思うよ。



3 :名無しさん:2000/04/19(水) 21:21
関数使ったら
何でもVBAじゃないよ

4 :tmp:2000/04/20(木) 14:48
>2さん

レスどうもです。

>いちいちactivateしているから遅いんじゃないの。

おっしゃる通りですね。
あまりのチンパンぶりにお恥ずかしい限りです。

で、折角ソースコードまで書いていただいたんですが、某所で質問した
ら10分くらいで解決しました。
そこによるとFOR文を2連続で使わないでセルの直接操作もやめて配列を
使い一気に変換して書きこむというものだったので思った以上に高速化
出来たんですよね。

しかし、配列に読み込んで書きこむ手間を考えるとアクティブにしない
で直接操作の方がいいかもしれませんね、、、。
ってことで、組みなおすときに参考にさせて頂きますね。

>3さん

>関数使ったら
>何でもVBAじゃないよ

わざわざご丁寧にどうも。
相当暇なんですね(ワラ

5 :3:2000/04/21(金) 20:11
あらら、通じないのね
残念でした

6 :名無しさん:2000/04/21(金) 20:24
全部置換するならマクロの方が早いでしょ

7 :3:2000/04/22(土) 13:35
いやいや、全部マクロの関数にする必要ないってことで、
マクロでワークシート関数を埋め込むっていうことなんだけどね

っていうか、この例なら
1.別列に当該列を変換する関数埋め込んで、JIS()ね
2.その列をコピーして当該列に値をペースト
これをマクロで回すっていうことなんだけどね

1.は、1行目だけマクロで埋め込んで、下に必要なだけ式をコピー

全部マクロでやるより、Excelの機能を使えるなら
それを使う。

つまり、マッチング処理なんかも場合により
VLOOKUP()使うとかね

でもあれか、このテクって95の場合何で、97だと違うのかな

8 :6>7:2000/04/23(日) 00:23
確かにそうですね
しかし1は感じ悪いな
聞くときだけ丁寧で、解決したとたんあれだ

9 :3:2000/04/23(日) 13:56
いえ、たぶん私の書き方が悪いんです。
3の表現が7にはつながらないですし、、

10 :???:2000/04/26(水) 23:04
でも何でこのプロシージャは
functionを使ってるの?
functionはサブルーチンにして
subで動かすのがいいと思うけどね

4 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)