Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
配列を使ってデータを一挙に変換したい
投稿日時: 19/12/08 21:01:56
投稿者: y2

こんにちは。早速ですが質問します。
 
B列からD列の間の範囲で、行数は毎回不定(10万行前後)、1行目はタイトル、2行目から最終行まで3列とも隙間なく、任意の正負の整数か0が入っているCSVファイルがあります。
この、「B2:D最終行(10万前後)」の範囲を、配列を使って一挙に、sgn関数の結果で置き換える(=正の整数なら1、0なら0、負の整数なら-1)ようなマクロを作りたいです。Redimと使うのか?と思いつつ、結局結論がわからなかったので質問します。よろしくお願いいたします。

回答
投稿日時: 19/12/08 21:40:40
投稿者: simple

CSVファイルを開いたり、結果を保存するところはそちらで対応してください。
骨格だけ示します。
 

Sub test()
    Dim lastRow As Long
    Dim v       As Variant
    Dim k       As Long
    
    lastRow = Cells(Rows.Count, "B").End(xlUp).Row
    
    v = Range(Cells(1, "B"), Cells(lastRow, "D")).Value
    
    For k = 2 To lastRow
        v(k, 1) = Sgn(v(k, 1)) 'ここはそちらで追加完成してください。
    Next
    
    Range(Cells(1, "B"), Cells(lastRow, "D")).Value = v
End Sub

# 作成依頼は禁止されています(*)ので、今後は、ご自分でできているところまで、
# 未完成でも結構ですから提示していただきたいですね。
 
# 掲示板の「利用上のお願い」で運営者がそう規定していますので。

投稿日時: 19/12/09 00:10:51
投稿者: y2

規約をよく把握しておらず、申し訳ありませんでした。
また、ご提示いただいたものをベースに解決できました。
ありがとうございました。