セル(F1)に3というデータが仮に入っているとします。
セル(F2)2、セル(G2)1、セル(H2)に12という計算で表示させたい
場合はマクロではどう記述すればよいでしょうか。
仮にF1に2というデータが入ってきた場合は、
セル(F2)1、セル(G2)12、セル(H2)に11という計算で表示させたい。
下記に表示例を示しています。
F1が1の場合 12、11、10
   4の場合 3 2 1
   5の場合 4 3 2
6の場合 5 4 3
7の場合 6 5 4
8の場合 7 6 5
9の場合 8 7 6
10の場合 9 8 7
11の場合 10 9 8
12の場合 11 10 9
教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

諸解答の内で一番簡単で,判りやすいコーディングではないでしょうか。


テーブル方式の利点が出ていると思います。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
a = Array(0, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 12, 11, 10)
For i = 1 To 12
If Worksheets("sheet1").Cells(1, 6) = a(i) Then
Worksheets("sheet1").Cells(2, 6) = a(i + 1)
Worksheets("sheet1").Cells(2, 7) = a(i + 2)
Worksheets("sheet1").Cells(2, 8) = a(i + 3)
End If
Next i
End Sub
    • good
    • 0

ifを登場させない方法で・・・



Sub Zengetu()
  Range("F2") = ((Range("F1") + 12 - 1) - 1) Mod 12 + 1
  Range("G2") = ((Range("F1") + 12 - 2) - 1) Mod 12 + 1
  Range("H2") = ((Range("F1") + 12 - 3) - 1) Mod 12 + 1
End Sub

数字に12を足して、1を引いて0~11または12~23になります。
これの12で割った余りを出してます。
1年前のカレンダーで計算している雰囲気です。
    • good
    • 0

これは、F1の値から1ずつ減らした数を(上限が12)それぞれのセルに表示するということでいいのでしょうか?


今月が1月なら1ヶ月前は12月とか。
いろんなやりかたがあるんですよね~

Sub test()
Dim I as integer
Dim A as integer
A=Val(Range("F1"))
For I=1 to 3
A = A - 1
if A < 1 Then
A=12
End If
Select I
Case 1
Range("F2")=A
Case 2
Range("G2")=A
Case 3
Range("H2")=A
End Select
Next
    • good
    • 0

このようなものでどうでしょうか?


おそらく、不必要な部分もあると思いますが・・・


If IsNumeric(Range("F1").Value) = True Then
If Range("F1").Value > 0 And Range("F1").Value < 13 And Int(Range("F1").Value) = Range("F1").Value Then

If Range("F1").Value = 1 Then
Range("F2").Value = 12
Else
Range("F2").Value = Range("F1").Value - 1
End If

If Range("F2").Value = 1 Then
Range("G2").Value = 12
Else
Range("G2").Value = Range("F2").Value - 1
End If

If Range("G2").Value = 1 Then
Range("H2").Value = 12
Else
Range("H2").Value = Range("G2").Value - 1
End If

Else
Range("F2").Value = ""
Range("G2").Value = ""
Range("H2").Value = ""
End If
Else
Range("F2").Value = ""
Range("G2").Value = ""
Range("H2").Value = ""
End If
    • good
    • 0

マクロではないですが計算式で



セルF2 =if(F1>1,F1-1,F1+11)
セルG2 =if(F1>2,F1-2,F1+10)
セルH2 =if(F1>3,F1-3,F1+9)

とすればよいと思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報