| 
    
     |  | ▼nonoka さん: >▼kanabun さん:
 >IFとelseifでつなげて解決致しました。
 >IFの使い方が少しわかったように思います。
 
 ご自分で解決されて何よりです。
 
 以下は、考え方の 参考です。
 
 > ADからARにランダムに0か1が入力されています。
 > NからAAにはADからARの数字を読み取って
 > 0が入っていれば空白、1が入っていれは足すという式にしたいです。
 
 以下の 例文を各行同じスタイルでまとめると
 
 NはADが 0 なら [K]、ADが 1 なら K + AD を表示。 Kは必ず「日付」。
 OはAEが 0 なら空白、AEが 1 なら N + AE を表示。Nは必ず「日付」
 PはAFが 0 なら空白、AFが 1 なら O(*) + AF を表示。
 QはAGが 0 なら空白、AGが 1 なら P(*) + AG を表示、。
 RはAHが 0 なら空白、AHが 1 なら Q(*) + AH を表示。
 SはAIが 0 なら空白、AIが 1 なら R(*) + AI を表示。
 '
 'ただし Pの式:Oが空白なら Oの代わりに N を足す。
 同様に Qの式: Pが空白なら 左の空白でないセルの値を足す。
 同様に Rの式: Qが空白なら 左の空白でないセルの値を足す。
 同様に Sの式: Rが空白なら 左の空白でないセルの値を足す。
 
 '↑この処理は 空白でないとき +1した値をセルに書き込む、と同時に
 セルのIDプロパティにも書き込んでおけば、
 次のセルが空白だったとき、そのセルのIDプロパティをコピーすれば
 NまでLoopで遡る必要がない。
 
 これをコードにすると、
 
 Sub test2()
 Dim c As Range
 
 [N1].Value = [K1].Value - ([N1].Value = 1)
 [N1].ID = [N1].Value
 
 [O1:AA1].ClearContents
 For Each c In [O1:AA1]
 If c.Offset(, 16).Value = 1 Then
 c.Value = CDate(c.Offset(, -1).ID) + 1
 c.ID = c.Value
 Else
 c.ID = c.Offset(, -1).ID
 End If
 Next
 
 End Sub
 
 |  |