Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : Microsoft 365)
IFで書いた内容をVBAに
投稿日時: 25/06/12 11:44:35
投稿者: 春麗

 
・B4に結果を表示させています
・D4には A ・ B ・ C のいずれかが入ります
・E4とF4 には 有 か 無 が入ります
 
D4がAの場合で、E4とF4に1つでも 有 の場合は B4 には R1 を
D4がAの場合で、E4とF4に 有 がない場合は B4 には R2 を
D4がBの場合で、E4とF4に1つでも 有 の場合は B4 には R2 を
D4がBの場合で、E4とF4に 有 がない場合は B4 には R3 を
D4がCの場合は無条件に B4 には R3 を入れたくて以下を書きました。
 
=IF(AND(D4="A",COUNTIF(E4:F4,"あり")=0),"R1",IF(AND(D4="A",COUNTIF(E4:F4,"あり")>0),"R2",IF(AND(D4="B",COUNTIF(E4:F4,"あり")=0),"R2",IF(AND(D4="B",COUNTIF(E4:F4,"あり")>0),"R3",IF(D4="C","R3",)))))
 
ただ、この動きをVBAで書けないかと言われています。
 
すみません
教えてください

投稿日時: 25/06/12 11:49:52
投稿者: 春麗

タイトルが適格ではなくてすみません

回答
投稿日時: 25/06/12 12:13:10
投稿者: sk

引用:
・B4に結果を表示させています
・D4には A ・ B ・ C のいずれかが入ります
・E4とF4 には 有 か 無 が入ります

想定されている処理において、セルの値の評価および計算結果の出力対象となるのは、
そのワークシートの 4 行目のセルだけでしょうか。
 
それとも、4 行目以外の行のセルも対象に含まれるのでしょうか。
 
引用:
この動きをVBAで書けないかと言われています。

また、その処理をどのタイミングで実行することを前提とされているのでしょうか。
 
・ユーザーが任意のタイミングでそのマクロを(手動で)呼び出す。
 
・そのワークシートの D4 セル、E4 セル、F4 セルのいずれかの値が変更された時に
 そのマクロを自動実行する。
 
・そのワークシートの D 列、E 列、F 列のいずれかの列のセルの値が変更された時に
 そのマクロを自動実行する。
 
・上記以外。

回答
投稿日時: 25/06/12 12:28:52
投稿者: Suzu

引用:
この動きをVBAで書けないかと言われています。

 
質問者さんは、具体的に、どこが分からないのでしょうか?
 
COUNTIF は ワークシート関数ですので、直接は使えません。
  WorkSheetFunction.ContIf を使う手もありますが、
  E4 と F4 の たった二つ のためであれば、直接 (E4=あり And F4=あり) の様にすれば良いです。
 
となれば、あとは IF の使い方のみ。条件分岐の話であり(プログラミングの)基礎的な部分になります。
 
質問者さんはこれまで、VBAのご質問もされていました。
その様な方が丸投げする様な質問の内容では無いと感じます。
 
具体的に、どの部分が分からないのでしょうか?

回答
投稿日時: 25/06/12 13:40:58
投稿者: Suzu

条件文と

引用:
D4がAの場合で、E4とF4に1つでも 有 の場合は B4 には R1 を
D4がAの場合で、E4とF4に 有 がない場合は B4 には R2 を
D4がBの場合で、E4とF4に1つでも 有 の場合は B4 には R2 を
D4がBの場合で、E4とF4に 有 がない場合は B4 には R3 を
D4がCの場合は無条件に B4 には R3 を入れたくて以下を書きました。

 
ワークシート関数式
引用:
=IF(AND(D4="A",COUNTIF(E4:F4,"あり")=0),"R1",IF(AND(D4="A",COUNTIF(E4:F4,"あり")>0),"R2",IF(AND(D4="B",COUNTIF(E4:F4,"あり")=0),"R2",IF(AND(D4="B",COUNTIF(E4:F4,"あり")>0),"R3",IF(D4="C","R3",)))))

 
整合性が取れていますか?
 
条件文内の、漢字【有】 と、関数式内の、ひらがな【あり】 は同じとしても
 
関数式
=IF(AND(D4="A",COUNTIF(E4:F4,"あり")=0),"R1"
  D4 が A かつ (E4:F4 の 【あり】の数が 0) の場合 → 『R1』を返す
      言い換えると
  D4 が A かつ E4とF4に 【あり】がない場合 → 『R1』を返す
 
    条件文内 の 1つ目と矛盾しています。
     同様に、C の場合以外の 残り3つも逆?
 
これが、ご自身の混乱の原因となって、丸投げ状態になっているのでしょうかね?

投稿日時: 25/06/12 16:47:16
投稿者: 春麗

大変失礼いたしました
こちらCloseさせていただきます