
こんにちは
VBAを使って式を組んだのですが
エラーになってしまいます。
やりたいこととしては
A列に関数、B列に文字などが入っていて
B列は最下部まで入力が住んでいるのですが
A列は途中までしか関数が入っていません。
最上部からオートフィルを使うと
列が長いため動きが遅くなってしまいます。
なのでA列の最下部から3行上に戻って
そこからオートフィルで式をB列と同じ行の位置まで
反映がしたいです。
組んだ式は以下になります。
→がついている文がエラーとなっており
実行時のエラー '1004':
Range クラスの AutoFill メゾットが失敗しましたという文が出てきます。
この文がおかしいのはわかるのですが
直し方がわかりません。。
お力をお貸しいただけますと幸いです。
何卒宜しくお願いいたします。
Sub Macro5()
'
' Macro5 Macro
'
'
n = Cells(Rows.Count, "A").End(xlUp).Row - 3
Range("A" & n).Select
→ Selection.AutoFill Destination:=Range("A2:A" & Cells(3).CurrentRegion.Rows.Count)
Range("A2:A" & Cells(3).CurrentRegion.Rows.Count).Select
End Sub
No.5ベストアンサー
- 回答日時:
>N列最下部から上に向かって・・・
二つのマクロをまとめてみました。
Sub Sample3()
Dim i As Long, lastRow As Long, myRow As Long
Dim myRng As Range
'//最初の処理//
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
For i = lastRow To 2 Step -1
If Cells(i, "A").HasFormula Then
myRow = i
Exit For
End If
Next i
Range(Cells(myRow, "A"), Cells(lastRow, "A")).Formula = Cells(myRow, "A").Formula
'//N列以降の処理//
lastRow = Cells(Rows.Count, "N").End(xlUp).Row
For i = lastRow To 2 Step -1
If Cells(i, "O").HasFormula Then
myRow = i
Exit For
End If
Next i
Set myRng = Range(Cells(myRow, "O"), Cells(myRow, "Y"))
Range(Cells(myRow, "O"), Cells(lastRow, "Y")).Formula = myRng.Formula
End Sub
こんな感じではどうでしょうか?m(_ _)m
無事に使えました!!
お忙しいところどうもありがとうございます。
他のセルで引用する場合は
lastRow = Cells(Rows.Count, "N").End(xlUp).Row
For i = lastRow To 2 Step -1
If Cells(i, "O").HasFormula Then
myRow = i
Exit For
End If
Next i
Set myRng = Range(Cells(myRow, "O"), Cells(myRow, "Y"))
Range(Cells(myRow, "O"), Cells(lastRow, "Y")).Formula = myRng.Formula
ここのところをどんどん貼り付けていけば使えました!
助かりました(*^^*)
No.4
- 回答日時:
こんにちは
横からですが・・・
A列には必ず同じ式が入るものと考えてよいのなら、A列の最終行からB列の最終行までに式を設定すればよいのではないでしょうか?
以下はその考え方によるマクロです。
Sub Sample()
lastB = Cells(Rows.Count, 2).End(xlUp).Row
lastA = Cells(Rows.Count, 1).End(xlUp).Row
If (lastB > lastA) Then
Cells(lastA, 1).Resize(lastB - lastA + 1).Formula = Cells(lastA, 1).Formula
End If
End Sub
ところで、毎回B列に値を入れるたびにマクロを実行するのと、手動で式をオートフィルするのって、ほとんど手間は変わらないと思いますし、毎回処理を行うことそのものが面倒な気がします。
例えば、前もってA列の使いそうな範囲に式を関数式を設定しておくということはできないのでしょうか?
そうすれば、いちいち関数式を継ぎ足してゆく手間どのものがなくなります。
そのままの式を設定すると、エラーになったり間違った値が表示されてしまうなどであれば
=IF(B1="","",現在の関数式)
のような関数にしておいて、B列に値があれば計算するようにしておくことで、解決しそうな気がするのですが・・・
(実は、こちらの案の方がお薦めなのですが)
No.3
- 回答日時:
続けてお邪魔します。
>できるだけ選択範囲を少なくしたいと考え・・・
B列データは増えていく可能性がある!というコトで、最小限のオートフィルで済ませたい!というコトですかね?
それでは↓のコードにしてみてください。
Sub Sample2()
Dim i As Long, lastRow As Long, myRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
For i = lastRow To 2 Step -1
If Cells(i, "A").HasFormula Then
myRow = i
Exit For
End If
Next i
Range(Cells(myRow, "A"), Cells(lastRow, "A")).Formula = Cells(myRow, "A").Formula
End Sub
B列最終行から上に向かって遡り、
A列の数式が入っているセル以降~A列の最終行(B列最終行)まで数式を入れるようにしてみました。m(_ _)m
No.1
- 回答日時:
こんにちは!
なぜ3行戻って下へフィル&コピーするのか判りません。
単純にA2セルの数式を最終行まで入れてはダメですか?
Sub Sample1()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Range(Cells(2, "A"), Cells(lastRow - 3, "A")).Formula = Range("A2").Formula
End Sub
ではどうなりますか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
-
4
VBAで複数の数式セルを最終行までコピーするには?
Excel(エクセル)
-
5
エクセルマクロ 行数可変のオートフィルター構文
Excel(エクセル)
-
6
エクセルVBAでのオートフィル
Excel(エクセル)
-
7
アクティブセルから、A列最終行までフィルダウン
Excel(エクセル)
-
8
エクセルVBA オートフィルの最終行の番号を特定セルの入力値で指定したい
Excel(エクセル)
-
9
ExcelのVBAのAutoFillの使い方について
Excel(エクセル)
-
10
オートフィルのマクロを作りたい
Excel(エクセル)
-
11
エクセルのオートフィルタで最初の数行を残してフィルタをしたい
Excel(エクセル)
-
12
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
13
マクロについて。S列の途中からデータがある最終行まで消したいのですが、 Range(”S8”,Cel
Visual Basic(VBA)
-
14
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
15
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
16
エクセルで可視セルにのみ値貼り付けをする方法があったら教えて下さい やりたいこととしては フィルター
Excel(エクセル)
-
17
エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PowerPointで表の1つの列だけ...
-
エクセルで二つの数字の小さい...
-
2つのエクセルのデータを同じよ...
-
エクセルでフィルタ後の条件付...
-
「B列が日曜の場合」C列に/...
-
エクセル(勝手に太字になる)
-
エクセルで最初のスペースまで...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
Excelで半角の文字を含むセルを...
-
EXCELで 一桁の数値を二桁に
-
エクセルの項目軸を左寄せにしたい
-
お店に入るために行列に並んで...
-
オートフィルターをかけ、#N/A...
-
エクセルのVLOOKUP関数の検索値...
-
Excel 文字列を結合するときに...
-
EXCELで cuontifやsubtot...
-
Excel関数(通常はA列優先で、...
-
ExcelのVBAで連番を振る。
-
エクセル 文字数 多い順 並...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
EXCELで 一桁の数値を二桁に
-
エクセル(勝手に太字になる)
-
エクセル 文字数 多い順 並...
-
エクセルで最初のスペースまで...
-
オートフィルターをかけ、#N/A...
-
エクセル 同じ数字を他の列に自...
-
エクセル 同じ値を探して隣の...
-
「B列が日曜の場合」C列に/...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
エクセルの項目軸を左寄せにしたい
-
Excel 文字列を結合するときに...
-
エクセルの表から正の数、負の...
-
【VBA】特定列に文字が入ってい...
-
エクセルで、列の空欄に隣の列...
-
オートフィルターの絞込みをし...
おすすめ情報
ご回答頂きましてありがとうございます。
「3」という数字に意味はありません。
ただ、A列B列最上部からオートフィルを使うと
多くの数値が入るため動きが遅くなってしまいます。
今回は軽量化のために、
できるだけ選択範囲を少なくしたいと考え、
「3つ上から」という数字を提示しました。
tom04さん
ご回答ありがとうございます。
A列に使用したところ一番早く動きました!
ありがとうございます。
これを他のセルにも適用したいと考え
N列最下部から上に向かって遡り
O:Y列の数式が入っているセル以降~O:Y列の最終行(N列最終行)まで
適用できるようにしたいのですが
このコードの下にコードをつなげるには
どの様に改変したらよいでしょうか。
何度もすみません。
宜しくお願い致します。