[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一行飛ばしのマクロ』(白川郷)
下記の表は、A列に納品日、B列に所要日数を。C列に一行飛ばしで着工日を求める式を C3 C5 C7 C9に入力しています。C2 C4 C6 C8は計算に直接関係の無い型番を表してい ます。この一行飛ばしのマクロをご指導お願いいたします。 正解はC3=12/1 C5=12/5 C7=12/6 C9=12/6です。
A B C 1 納品日 所要日数 着工日 2 12/24 23 aaa 3 =A2-C2 4 12/26 21 bbb 5 =A4-C4 6 12/27 21 ccc 7 =A6-C6 8 12/28 22 ddd 9 =A8-C8
< 使用 Excel:Excel2007、使用 OS:Windows7 >
C3に「=A2-C2」と入力しコピー ↓ C5〜必要なだけ下方向にセル選択 ↓ 「検索と選択」で「ジャンプ」選択 ↓ セル選択 ↓ 「空白セル」選択 ↓ Ctrl+V で空白セルに式がコピーされます。
(カリーニン) 2014/12/12(金) 21:29
マクロなら↓のような感じです。 数式はマクロの自動記録が参考になると思います。 あとは変数を組み込みます。
Sub test() Dim i As Integer For i = 3 To 9 Step 2 ActiveSheet.Cells(i, 3).FormulaR1C1 = "=R[-1]C[-2]-R[-1]C[-1]" Next i End Sub
(カリーニン) 2014/12/12(金) 21:55
>=A2-C2
↓ですよね??
=A2-B2 (カリーニン) 2014/12/12(金) 22:58
2014/12/12(金) 21:29の手作業をマクロ化するとこんな感じです。
Sub test()
With Range("C3") .FormulaR1C1 = "=R[-1]C[-2]-R[-1]C[-1]" .Copy .Resize(10).SpecialCells(xlCellTypeBlanks).Select ActiveSheet.Paste .Select End With Application.CutCopyMode = False End Sub (カリーニン) 2014/12/12(金) 23:04
カリーニンさん、ありがとうございました。 =A2-C2ではなく、A2-B2が正解です。すみませんでした。
今までR1C1形式をやったことがなかったので調べてみました。 2014/12/12(金) 23:04にいただいた回答は、 2014/12/12(金) 21:55 よりも処理時間数倍早く、これで うまくいきました。ありがとうございました。
(白川郷) 2014/12/13(土) 00:15
違いを感じるほどということは大量のデータですか? でしたらループで配列に格納し一括転記、という方法もあります。 今回は一行置きですので元々入っているデータも配列に格納し転記 し直しています。
大量のデータでは試してませんが、2014/12/12(金) 21:55のコード よりは速くなっているとおもいます。
Sub test() Dim i As Integer Dim Ary() As Variant Dim kairw As Integer Dim lastrw As Long kairw = 2 '開始行/提示のデータだと「2」 lastrw = 8 '最終行/提示のデータだと9-1で「8」 For i = kairw To lastrw Step 2 ReDim Preserve Ary(i - 1) Ary(i - 1) = "=R[-1]C[-2]-R[-1]C[-1]" Ary(i - 2) = ActiveSheet.Cells(i, 3).Value Next i ActiveSheet.Cells(kairw, 3).Resize(lastrw - kairw + 1).Formula = WorksheetFunction.Transpose(Ary) Erase Ary End Sub (カリーニン) 2014/12/13(土) 08:51
こういうこと?
Sub test() On Error Resume Next Range("c1", Range("c" & Rows.Count).End(xlUp)(2)).SpecialCells(4).Formula = _ "=r[-1]c[-2]-r[-1]c[-1]" On Error GoTo 0 End Sub (seiya) 2014/12/13(土) 09:42
すばらすぃ (カリーニン) 2014/12/13(土) 09:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.