人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelのマクロに関する質問です。良い回答は、300ポイント差し上げます。
ある特定の列3000行まで、自動でセルに式を入力したい。

【Aシート】
3 [論理棚卸] [実棚卸数] [棚卸差異] [単価] [消費額]
4 15 15 =IF(A4="","",B4-A4) 50 =IF(B4="","",C4*D4)
5 80 40 =IF(A5="","",B5-A5) 30 =IF(B5="","",C5*D5)
6 25 24 =IF(A6="","",B6-A6) 20 =IF(B6="","",C6*D6)

式を自動で入力したいのは、[棚卸差異]列と[消費額]列になります。
どうか宜しくお願いします。

●質問者: anim130M
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:24 B4 b6 C5 D4
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● SALINGER
●10ポイント

実棚卸数の列と棚卸差異の列をオートフィルで3000行までドラッグするのが簡単です。


一応マクロでやるとすると、それぞれC列とE列として、4行目の数式を書いて

Sub Macro()
 Range("C4").AutoFill Destination:=Range("C4:C3000"), Type:=xlFillDefault
 Range("E4").AutoFill Destination:=Range("E4:E3000"), Type:=xlFillDefault
End Sub

が3000行までオートフィルするマクロとなります。

◎質問者からの返答

回答ありがとうございました。


2 ● doxas
●300ポイント ベストアンサー

ものすごくアナログちっくなやり方ですが。

Option Explicit

Sub test()

 Dim L As Long
 
 For L = 4 To 3000
 Range("C" & L).Formula = "=IF(A" & L & "="""","""",B" & L & "-A" & L & ")"
 Range("E" & L).Formula = "=IF(B" & L & "="""","""",C" & L & "*D" & L & ")"
 Next
 
End Sub
◎質問者からの返答

回答ありがとうございました。

どんぴしゃでした。


3 ● DOK
●10ポイント

棚卸の原価計算の簡略化をしたいとお見受けします。

もし、実棚・単価が入っているようでしたら

棚卸差異と消費額の式を最初の1つ(4行目)のみ入力し

http://pc.nikkeibp.co.jp/article/technique/20100805/1026770/

この技を使うことで全自動で入力されます。

このサイトの説明では「列全体」となっていますが

実際は隣のセルに数字の入っている行まで適応されます。

またEXCEL2010の例になっていますが、2003以降であればどれでも同じく使えます。

また、右クリックをしながらドラッグをすることで、

「書式のみコピー」や「連続した数字の入力」など、小技がいろいろ使えますので

一度お試しください。

何らかの事情でマクロにこだわっておられる場合は申し訳ありません。

◎質問者からの返答

回答ありがとうございました。


4 ● うぃんど
●10ポイント

マクロでのやりかたもいろいろありますが例をいくつか作ってみましたので見比べてみてください

(1)少しだけ応用の利く方法

"が4つ並んでいるのは記入ミスではありません

"を文字列として扱わせるためには""と2つ続けて書く必要があるため、"を二つ続けたい場合には""と""で""""と4つ連なることになるのです

Sub Macro1()
 Dim r As Long
 r = 3000: '最終行を指定する
 With Range("C4")
 .Formula = "=IF(A4="""","""",B4-A4)"
 .AutoFill Destination:=Range("C4:C" & r), Type:=xlFillDefault
 End With
 With Range("E4")
 .Formula = "=IF(B4="""","""",C4*D4)"
 .AutoFill Destination:=Range("E4:E" & r), Type:=xlFillDefault
 End With
End Sub

(2)ちょっと手抜きな方法

後でメンテナンスが面倒になるかもしれませんが今回限りならこれでも十分

Sub Macro2()
 With Range("C4")
 .Formula = "=IF(A4="""","""",B4-A4)"
 .AutoFill Destination:=Range("C4:C3000"), Type:=xlFillDefault
 End With
 With Range("E4")
 .Formula = "=IF(B4="""","""",C4*D4)"
 .AutoFill Destination:=Range("E4:E3000"), Type:=xlFillDefault
 End With
End Sub

(3)もっと手抜きな方法

コピーではなく直接的に式を書き込んでしまう方法

Sub Macro3()
 Range("C4:C3000").Formula = "=IF(A4="""","""",B4-A4)"
 Range("E4:E3000").Formula = "=IF(B4="""","""",C4*D4)"
End Sub

5 ● ootatmt
●10ポイント

これが正解でしょう。

Sub 数式入力()

With Worksheets("Aシート")
 .Range("C4:C3000").FormulaR1C1 = "=IF(RC[-2]="""","""",RC[-1]-RC[-2])"
 .Range("E4:E3000").FormulaR1C1 = "=IF(RC[-3]="""","""",RC[-2]*RC[-1])"
End With

End Sub

シート名は適宜変更してください。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ