- ベストアンサー
数値が1の時は1で、他の数値は2倍にしたいので
VBAで手仕事の計算式を作っているのですが・・・・・・ If dif <> 0 Then hme1 = Str(ddan * 2) + " " + Str(dif) Range("_TDIF").Item(i).Value = hme1 ddan = 0 End If 2行目の(ddan * 2)として、偶数ddanにするために2倍にしたのですが、数値が1の場合は1のままで、 その他は2倍にする方法を教えてください。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
hme1 = Str(iif(ddan=1,1,2*ddan)) + " " + Str(dif) とかでしょうか。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17070)
Sub test03() For i = 1 To 7 If i = 1 Then Cells(i, "B") = 1 Else Cells(i, "B") = i * 2 End If Next i End Sub のような、IFステートメントで場合を分けるのはダメなのですか。質問の意味、わざわざ聞く意味がわからない。 1行で書く既に回答に出ているIIFや Sub test02() For i = 1 To 7 Cells(i, "A") = (i = 1) * -1 + (i > 1) * -2 * i Next i End Sub もあるが上記は出来るというだけ。 >VBAで手仕事の計算式を作っているのですが・ の意味も良くわからない。質問に書く必要あるのかな
- kmetu
- ベストアンサー率41% (562/1346)
if ddan=1 then hme1="1" else hme1 = Str(ddan * 2) + " " + Str(dif) end if ということでしょうか
- Cupper-2
- ベストアンサー率29% (1342/4565)
整数…ですよね。 アルゴリズムとしては、 全部の数字を2倍にする 2倍にした数字が2ならば1に置き換える で良いと思いますがどうでしょう。
- mshr1962
- ベストアンサー率39% (7417/18945)
If dif <> 0 Then hme1 = Str(ddan * Iif(dif = 1 ,1,2)) + " " + Str(dif) Range("_TDIF").Item(i).Value = hme1 ddan = 0 End If または If dif <> 0 Then If dif = 1 Then hme1 = Str(ddan) + " " + Str(dif) Else hme1 = Str(ddan * 2) + " " + Str(dif) End If Range("_TDIF").Item(i).Value = hme1 ddan = 0 End If
お礼
早速に回答を頂き有難うございました。 お陰さまで思ったように解決致しました。 又の質問の時にはよろしくご指導くださいませ。