こんにちは
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
-
4
エクセルVBAでのオートフィル
Excel(エクセル)
-
5
アクティブセルから、A列最終行までフィルダウン
Excel(エクセル)
-
6
エクセルマクロ 行数可変のオートフィルター構文
Excel(エクセル)
-
7
VBAで複数の数式セルを最終行までコピーするには?
Excel(エクセル)
-
8
マクロで任意の列を参照して、オートフィルをする方法が知りたいです。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル(勝手に太字になる)
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
VBAで文字列を数値に変換したい
-
エクセル 文字数 多い順 並...
-
「B列が日曜の場合」C列に/...
-
【VBA】特定列に文字が入ってい...
-
エクセルの列を範囲選択しての...
-
オートフィルターをかけ、#N/A...
-
VBAでセル入力の数式に変数を用...
-
エクセルの項目軸を左寄せにしたい
-
お店に入るために行列に並んで...
-
Excel、市から登録している住所...
-
エクセル 同じ値を探して隣の...
-
エクセルの表から正の数、負の...
-
エクセル 時間帯の重複の有無
-
【エクセル】指定した文字以外...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル 文字数 多い順 並...
-
VBAで文字列を数値に変換したい
-
エクセル(勝手に太字になる)
-
エクセルで文字が混じった数字...
-
「B列が日曜の場合」C列に/...
-
エクセルの表から正の数、負の...
-
Excelで半角の文字を含むセルを...
-
エクセル 同じ値を探して隣の...
-
Excel、市から登録している住所...
-
エクセルの項目軸を左寄せにしたい
-
EXCELで 一桁の数値を二桁に
-
VBA 連続行データを5行ずつ隣の...
-
エクセル 時間帯の重複の有無
-
オートフィルターをかけ、#N/A...
-
エクセルで、列の空欄に隣の列...
-
A列がない・・・A列が非表示に...
おすすめ情報
ご回答頂きましてありがとうございます。
「3」という数字に意味はありません。
ただ、A列B列最上部からオートフィルを使うと
多くの数値が入るため動きが遅くなってしまいます。
今回は軽量化のために、
できるだけ選択範囲を少なくしたいと考え、
「3つ上から」という数字を提示しました。
tom04さん
ご回答ありがとうございます。
A列に使用したところ一番早く動きました!
ありがとうございます。
これを他のセルにも適用したいと考え
N列最下部から上に向かって遡り
O:Y列の数式が入っているセル以降~O:Y列の最終行(N列最終行)まで
適用できるようにしたいのですが
このコードの下にコードをつなげるには
どの様に改変したらよいでしょうか。
何度もすみません。
宜しくお願い致します。