B列の1行目から232970行目を、空白セルであれば0を入力するという構文を
作成してみました。(配列について勉強中)
これをB列だけでなく、FQ列まで同じように処理を実行したいと考えています。
Dim i As Long
Dim MyArray As Variant
MyArray = Range(Cells(1, "B"), Cells(232970, "B"))
For i = 1 To 232970
If MyArray(i, 1) = "" Then
MyArray(i, 1) = "0"
End If
Next i
Range(Cells(1, "B"), Cells(232970, "B")) = MyArray
End Sub
↓
FQ列まで同じように繰り返しということで、下記のようにしてみました。
これでも動くのですが、二次元配列で行だけでなく列まで配列出来たらもっと
スマート&速度アップになるでしょうか?
二次元配列についてあまりよく理解できていませんのでその点ご教授頂ければと考えています。
Dim i, s As Long
Dim MyArray As Variant
For s = 2 To 173
MyArray = Range(Cells(1, s), Cells(23297, s))
For i = 1 To 23297
If MyArray(i, 1) = "" Then
MyArray(i, 1) = "0"
End If
Next i
Range(Cells(1, s), Cells(23297, s)) = MyArray
Next s
No.1ベストアンサー
- 回答日時:
>MyArray = Range(Cells(1, "B"), Cells(232970, "B"))
範囲を纏めて入れられるので FQ列までまとめて入れる事も可能です。
セル範囲を配列に入れるので、この場合、配列内は1から始まります 1 To 172
MyArray(1 to 23297,1 to 172)
MyArray = Range(Cells(1, 2), Cells(23297, 173))
For i = 1 To 23297
For s = 1 To 172
If MyArray(i, s) = "" Then
MyArray(i, s) = "0"
End If
Next s
Next i
Range(Cells(1, 2), Cells(23297, 173)) = MyArray
一度に出力するので、書き出し部分の回数分くらい早いかと思います。
早速のご回答誠にありがとうございます。
行だけでなく、列もまとめて配列に入れる事が出来るのですね。
ご教示頂いた内容を試した結果、問題無く実行できました。
No.3
- 回答日時:
こんにちは!
空白セルには数式は入っていないのですかね?
そうであればNo.2さんがおっしゃっている方法が一番簡単で速いと思います。
質問文では232970行までとなっていますが、コードは23297行までですね。
とりあえず23297行目までとしています。
配列を使わず一気にやる場合は
Sub Sample1()
On Error Resume Next '//←念のため//
Range(Cells(1, "B"), Cells(23297, "FQ")).SpecialCells(xlCellTypeBlanks).Value = 0
End Sub
こんな感じでいけると思います。
どうしても二次元配列で処理したいのであれば・・・
Sub Sample2()
Dim i As Long, j As Long
Dim myR
myR = Range(Cells(1, "B"), Cells(23297, "FQ"))
For i = 1 To 23297
For j = 1 To Range("FQ1").Column - 1
If myR(i, j) = "" Then
myR(i, j) = 0
End If
Next j
Next i
Range(Cells(1, "B"), Cells(23297, "FQ")) = myR
End Sub
こんな感じでしょうかね。
※ 余談ですが、
個人的に列番号を取得する場合、A列・B列などであればすぐに1や2のように取得できますが
列数が増えた場合は指折り数えたり、今回のように「FQ」列などとてつもない数になりますので、
>Range("FQ1").Column
のようにすればFQ列の列番号が簡単に取得できます。
(ちなみに「-1」としているのはB列~FQ列が配列の列数になりますので、A列分の「1」をマイナスする必要があります)
なので列数が少なくても、仮にA1セルだとすると自分では
>Cells(1, 1)
とせずに
>Cells(1, "A")
のような感じでやっています。
もちろん慣れている方で構わないと思いますが・・・m(_ _)m
No.2
- 回答日時:
それでも良いと思いますが、自分なら別の手順になる。
以下は「マクロの記録」で操作をそのままマクロにしたものです。
A1セルには「0」が入力されていて、
それをコピー。
B1セルからFQ232970セルまでの範囲を選択。
”ジャンプ機能” で空白のセルを選択。
そこへ「0」を貼り付け。
最後にA1セルを選択して終わる。
こんな感じ。
Sub Macro1()
'
' Macro1 Macro
'
'
Range("A1").Select
Selection.Copy
Range("B1:FQ232970").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
ActiveSheet.Paste
Range("A1").Select
End Sub
このほうがスマート。
(でも、これ、マクロにする意味無いんだよなあ…手動でやっても一瞬で終わるし、繰り返し行うこともない)
配列を使っても良いけど、
システムに搭載されているメモリに依存するかもしれないので、
質問にあるような広範囲に対して自分はあまり使わない。
・・・
For ~ Next
の使い方を覚えるなら、質問文にあるやり方で十分です。
Excelに処理速度を求めるなら、Excelが持っている ”標準の機能” を使うと良いでしょう。
記述も簡単になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと タイムマシンを破壊すべきか。
これはディベートの論題だと仮定したうえでの回答お願いします。あなたは、その末にタイムマシンを壊してしまうのか、使い道を探すのかどうかを考えてもらいたいです。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
選択範囲の空白セルに0を入れるマクロ
Word(ワード)
-
Variant型で宣言してるのにEmptyになる
Visual Basic(VBA)
-
VBAで配列の計算
Excel(エクセル)
-
-
4
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
配列の要素がすべてカラかどうかの判断
Visual Basic(VBA)
-
7
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
8
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
9
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
10
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
11
VBA 空白セルを削除ではない方法で詰めるやり方
Visual Basic(VBA)
-
12
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
13
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
14
配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?
Visual Basic(VBA)
-
15
VBA 見つからなかった時の処理
Excel(エクセル)
-
16
for next の不連続版があるでしょうか
その他(Microsoft Office)
-
17
UserForm1.Showでエラーになります。
工学
-
18
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
19
VBA 複数の行を高速で削除する方法
その他(プログラミング・Web制作)
-
20
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで2つの数値のうち大きい...
-
エクセルで、2種類のデータを...
-
エクセルのまとめてカッコをつ...
-
エクセルで特定の文字が入って...
-
Excel表を一列にしたい
-
ある列のセルに特定の文字が入...
-
エクセルの関数
-
Excel 頭に「0」がついている...
-
A列にもB列にもある値が知りた...
-
エクセルの1つのセル内にある...
-
連続データを1行おきに貼り付け...
-
【EXCEL】別シートに同じ番号が...
-
エクセルで、数字列の中にハイ...
-
桁の違う数値での並び替え
-
Excelで中央揃えが出来ない?
-
Excelでスペースを消す方法
-
Excel2013 カラースケールを別...
-
エクセル、11と1の区別
-
エクセルで二つの数字の小さい...
-
エクセルでオートフィルタのボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで2つの数値のうち大きい...
-
エクセルで、2種類のデータを...
-
エクセルで特定の文字が入って...
-
エクセルのまとめてカッコをつ...
-
Excelで中央揃えが出来ない?
-
桁の違う数値での並び替え
-
エクセルに入力した文字列に句...
-
Excel 頭に「0」がついている...
-
Excel 指定行までコピーをおこ...
-
excelで、1つのセルに入ってい...
-
エクセルで、数字列の中にハイ...
-
Excelの結合でA列とB列の内容...
-
Excel2013 カラースケールを別...
-
Excel強制終了
-
セル内文章から、英数字のみ取...
-
excel: 2行ずつ間隔を空けて関...
-
連続データを1行おきに貼り付け...
-
エクセルの関数
-
WEEKDAY 空白も7になってしまう
-
Excelで%表示を全角にしたいの...
おすすめ情報