任意のセルに、計算式を入力しております。
A B C
1 個数 金額 基準単価
2 5 15000 3000
3 123 25780
4
・
・
600
C2には、B2/A2という計算式が入っております。
この計算式を、C600(浮動)までコピーしたいのですが、
どうしてもうまくいきません。。
Sub 基準単価()
Dim i As Integer
Application.ScreenUpdating = False
'1行目で検索
For i = Range("IV1").End(xlToLeft).Column To 1 Step -1
If InStr(Cells(1, i).Value, "基準単価") > 0 Then
Cells(2, i).FormulaR1C1 = B2/A2
Cells(2, i)Selection.AutoFill Destination:=
Range("Cells(2, i).End(xlDown)).Type:=xlFillDefault
End If
Next i
Application.ScreenUpdating = False
End Sub
どうぞよろしくお願いします!!
No.2ベストアンサー
- 回答日時:
こんにちは。
>Cells(2, i).Formula = "=B2/A2"
>のところを、
>Cells(2, i).Formula ="=Cells(2, i - 1) / Cells(2, i - 2)"
>としました。
ワークシートにはワークシートの表現の仕方がありますから、VBAの表現方法ではうまくいきません。
"=B2/A2"
これは、絶対参照になっていませんから、そのままでよいのです。
この意味は、
VBAでは、
Cells(2, i - 1) / Cells(2, i - 2)
と同じことです。つまり、R1C1 方式でいうと、
"=RC[-1] /RC[-2]"
このように書き表します。分かりやすいので、私は、こちらを使っています。
私なりの方法で考えてみました。オートフィル・メソッドは、デフォルト方式の場合などは、VBAではあまり使われません。
Sub 基準単価r()
Dim i As Integer
Application.ScreenUpdating = False
'1行目で検索
For i = Range("IV1").End(xlToLeft).Column To 3 Step -1
If InStr(Cells(1, i).Value, "基準単価") > 0 Then
'基準単価の列で範囲を取るよりは、個数や金額のところで範囲を取ったほうがよいと思います。ただし、End(xlDown)は、多少問題は残っています。
Range(Cells(2, i), Cells(2, i - 2).End(xlDown).Offset(, 2)).FormulaR1C1 = _
"=RC[-1]/RC[-2]" '相対参照式を使います
End If
Next i
Application.ScreenUpdating = False
End Sub
もし、下に何も入れていない状態だったら、
Range(Cells(2, i), Cells(65536, i - 2).End(xlUp).Offset(, 2)).FormulaR1C1 =
としたほうがよいと思います。それは、1行目だけか、2行目だけにしか入っていない場合は、一番、下まで、行ってしまいます。
また、Step -1 と、右から数式を入れているようですが、今回の場合、列の挿入がなければ、あまり関係がないようです。
ありがとうございました!出来ました。
End(xlDown)よりも、End(xlUp)のほうがよいと、確かに
言われました。
いつも教えていただいてどうもありがとうございます。
No.3
- 回答日時:
#1のmerlionXXです。
Wendy02さんがお書きのとおりですが。
Cells(2, i).Formula = "=B2/A2" を
x = "=" & Cells(2, i - 1).Address(0, 0) & "/" & Cells(2, i - 2).Address(0, 0)
Cells(2, i).Formula = x
でも可能です。
セルの指定が難しくて、進まない箇所が多いのが
現状です・・。
上記のような記述をするんですね!
ありがとうございました!
勉強になりました!!
No.1
- 回答日時:
なにか随分複雑に作ってますね。
そのまま使うならこんなかんじでしょうか?
(計算式の入力と、AutoFillのやりかたを変えただけです)
Sub 基準単価()
Dim i As Integer
Application.ScreenUpdating = False
'1行目で検索
For i = Range("IV1").End(xlToLeft).Column To 1 Step -1
If InStr(Cells(1, i).Value, "基準単価") > 0 Then
Cells(2, i).Formula = "=B2/A2"
Cells(2, i).AutoFill Destination:=Range(Cells(2, i), Cells(2, i - 1).End(xlDown).Offset(0, 1)), Type:=xlFillDefault
End If
Next i
Application.ScreenUpdating = False
End Sub
この回答への補足
ありがとうございます!書き方ひとつでこんなに
すっきり実行できました。
もう1つだけ教えて下さい。。
実際には、
Cells(2, i).Formula = "=B2/A2"
のところを、
Cells(2, i).Formula ="=Cells(2, i - 1) / Cells(2, i - 2)"
としました。
=Cells(2, i - 1) / Cells(2, i - 600)
と文字が返ってきます。。
セルの指定方法をすみませんが教えて下さい!
お手数をおかけします。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
はじめまして。私、配管業を個...
-
公共建築工事(設備)の積算に...
-
●何故? ラーメン店は 開業•閉...
-
製造業に勤めています。 外注さ...
-
単価の前についている「@」
-
一式という言葉の使い方
-
エクセル 価格表から単価を呼び...
-
ACCESSのレコード順番の入れ替え
-
26歳女です。彼氏がいてメンエ...
-
会社で昇級試験があり、提言書...
-
IFERROR、SMALL関数について
-
独占禁止法、下請法、優越的地...
-
2024年 職人不足で単価が上がる...
-
事務所ビルの電気料金について...
-
エクセル 単位
-
鶏肉のもも肉、むね肉、など部...
-
3dプリンターで儲かる?
-
電気工事の見積もりについて勉...
-
ネットフェンスの撤去費の積算
-
天井開口費の見積について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
はじめまして。私、配管業を個...
-
一式という言葉の使い方
-
CIF単価→FOB単価の算出の仕方を...
-
製造業に勤めています。 外注さ...
-
天井開口費の見積について
-
エクセル 価格表から単価を呼び...
-
会社で昇級試験があり、提言書...
-
外構見積もりましたが、どうで...
-
2024年 職人不足で単価が上がる...
-
公共建築工事(設備)の積算に...
-
事務所ビルの電気料金について...
-
仕入単価
-
1工数1人工
-
単価の前についている「@」
-
積算 高所作業車 建築
-
●何故? ラーメン店は 開業•閉...
-
外付けHDDって、この先も長く、...
-
接客販売店員の一日の平均売り上げ
-
売上、客数、単価から買い上げ...
-
リストボックスの項目に、他の...
おすすめ情報