Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13414 / 13644 ツリー ←次へ | 前へ→

【5527】IF文のエラー チョコ 03/5/17(土) 18:52 質問
【5529】Re:IF文のエラー ichinose 03/5/17(土) 19:58 回答
【5532】Re:IF文のエラー こう 03/5/17(土) 20:28 発言
【5533】Re:IF文のエラー ichinose 03/5/17(土) 20:40 お礼
【5530】ネストは7個まで こう 03/5/17(土) 20:22 回答
【5534】Re:ネストは7個まで チョコ 03/5/17(土) 20:53 質問
【5535】Re:ネストは7個まで ichinose 03/5/17(土) 21:13 発言
【5536】Re:ネストは7個まで チョコ 03/5/18(日) 1:28 お礼

【5527】IF文のエラー
質問  チョコ  - 03/5/17(土) 18:52 -

引用なし
パスワード
   こんにちは〜〜

ちょっとお尋ねします

B1に1 C1に4 D1に7 E1に10 F1に30 入力してます。

B1が1←(この1は数字の1です)の時G1が1←(丸印の1)
C1が4←(この1は数字の4です)の時H1が2←(丸印の2)
D1が7←(この1は数字の7です)の時I1が3←(丸印の3)
E1が10←(この1は数字の10です)の時J1が4←(丸印の4)
F1が13←(この1は数字の13です)の時K1が10←(丸印の10) になるように条件をいれたのですが、式にエラーがあってわからないので
教えてください。

G1に入力した式です→=IF(B1<3,"1",IF(B1<6,"2",IF(B1<9,"3",IF(B1<12,"4",IF(B1<15,"5",IF(B1<18,"6",IF(B1<21,"7",IF(B1<24,"8",IF(B1<27,"9",IF(B1<32,"10",""""""""""))))))))))

エラーが出る場所は IF(B1<27,"9",IF(B1<32,"10",""""""""""))))))))))
          ↑
         ここのIFが黒なってます。

何処が間違ってるのか解らないのでおしえてください。

【5529】Re:IF文のエラー
回答  ichinose  - 03/5/17(土) 19:58 -

引用なし
パスワード
   ▼チョコ さん:
こんばんは。
>ちょっとお尋ねします
>
>B1に1 C1に4 D1に7 E1に10 F1に30 入力してます。
>
>B1が1←(この1は数字の1です)の時G1が1←(丸印の1)
>C1が4←(この1は数字の4です)の時H1が2←(丸印の2)
>D1が7←(この1は数字の7です)の時I1が3←(丸印の3)
>E1が10←(この1は数字の10です)の時J1が4←(丸印の4)
>F1が13←(この1は数字の13です)の時K1が10←(丸印の10) になるように条件をいれたのですが、式にエラーがあってわからないので
>教えてください。
>
>G1に入力した式です→=IF(B1<3,"1",IF(B1<6,"2",IF(B1<9,"3",IF(B1<12,"4",IF(B1<15,"5",IF(B1<18,"6",IF(B1<21,"7",IF(B1<24,"8",IF(B1<27,"9",IF(B1<32,"10",""""""""""))))))))))
>
>エラーが出る場所は IF(B1<27,"9",IF(B1<32,"10",""""""""""))))))))))
>          ↑
>         ここのIFが黒なってます。
>
>何処が間違ってるのか解らないのでおしえてください。
IF関数のネストは最大8まででしたよ。「IF(B1<27,"9",・・・」で9個目だからです。
数式を見ると、例外もあるけど、3の倍数で殆どチェックされていますよね?
「=IF(B1>=32,"",IF(B1>=30,INT((B1)/3),INT(B1/3)+1))」
なんてしてみるとご希望の数式になりませんか?
但し、上記の例がたまたま3の倍数という規則性があるだけで他の個所は違うというのならば、
予め、対応する表を作っておき、Vlookup関数等で入力された値を検索するいう方法もあります。
他にも方法あるかもしれませんが、IF関数のネストの数が限られていますから、
別の方法を考えなければなりませんね!。

【5530】ネストは7個まで
回答  こう E-MAIL  - 03/5/17(土) 20:22 -

引用なし
パスワード
   チョコさん,こんにちわ。
>G1に入力した式です→=IF(B1<3,"1",IF(B1<6,"2",IF(B1<9,"3",IF(B1<12,"4",IF(B1<15,"5",IF(B1<18,"6",IF(B1<21,"7",IF(B1<24,"8",IF(B1<27,"9",IF(B1<32,"10",""""""""""))))))))))
IF文のネストは7個までです。詳細はhelpに記載してます。
>>最大 7 つまでの IF 関数を 真の場合、偽の場合 としてネストすることにより、より複雑なテストを行うことができます。
んで,8個めのIF文でエラーって叱られてますね。

ということで,
上記コードは規則性があるので計算式で求めてみました。
(IF(B1<32,"10"は「B1<30」では?)

G1に =JIS(ROUNDDOWN(B1/3,0)+1)

丸付きの数字ではなく全角数字なので,丸付きにする場合は,
もうちょっと加工が必要ですね。


また,VBAっぽくマクロで行うなら,
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$B$1" Then
    With Range("G1")
     Select Case Target.Value
      Case Is < 3: .Value = "1."
      Case Is < 6: .Value = "2."
      Case Is < 9: .Value = "3."
      Case Is < 12: .Value = "4."
      Case Is < 15: .Value = "5."
      Case Is < 18: .Value = "6."
      Case Is < 21: .Value = "7."
      Case Is < 24: .Value = "8."
      Case Is < 27: .Value = "9."
      Case Is < 32: .Value = "10."
     End Select
    End With
  End If
End Sub
ってな感じですかね。

【5532】Re:IF文のエラー
発言  こう E-MAIL  - 03/5/17(土) 20:28 -

引用なし
パスワード
   ichinoseさん,こんにちわ。

かぶってしまいました。ごめんなさい。
しかも,かなりな時間経過後に...(T_T)

【5533】Re:IF文のエラー
お礼  ichinose  - 03/5/17(土) 20:40 -

引用なし
パスワード
   ▼こう さん:
こんばんは。
>かぶってしまいました。ごめんなさい。
>しかも,かなりな時間経過後に...(T_T)
いいえ、私は8個までOKだと思っていたので、助かりました。
8個以上、不可でしたね。HELP確認いたしました。勉強になりました。
こういう数をしっかり押さえとかないと試験には受かりませんね!!

【5534】Re:ネストは7個まで
質問  チョコ  - 03/5/17(土) 20:53 -

引用なし
パスワード
   ▼みなさん、ありがとうございます。

どうしても、丸印の1にしたいです。


IF文では7個までなんですね。知らなかったです。

【5535】Re:ネストは7個まで
発言  ichinose  - 03/5/17(土) 21:13 -

引用なし
パスワード
   ▼チョコ さん:
32が間違いか正しいかわかりませんが、32で間違いないとして、
「=IF(B1>=32,"",IF(B1>=30,CHAR(11552+INT((B1)/3)),CHAR(11552+INT(B1/3)+1)))」
では?

【5536】Re:ネストは7個まで
お礼  チョコ  - 03/5/18(日) 1:28 -

引用なし
パスワード
   ▼ichinose さん:

凄いの一言です!!

天才ですね。

EXCELって奥深いですね。

有難う御座いました。

13414 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free