• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 関数 IF ORまたはVBA??)

Excel関数IFとVBAの違いについて

このQ&Aのポイント
  • Excelの関数IFとVBAの違いについて教えてください。
  • セルの値によって条件分岐をする際に、Excelの関数IFとVBAのどちらを使用すれば良いのでしょうか?
  • また、O9セルに特定の値があった場合にQ9セルの表示を調整する方法についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

すいません。 仕様読み間違えましたので訂正します。 U8   O9      結果 あ~お   まで      空白 あ~お   朝、昼、夕  まで あ~お   それ以外   空白 それ以外  まで      空白 それ以外  朝、昼、夕  まで それ以外  それ以外   まで 質問文から、こういう仕様と考えます IF関数の場合は =IF(OR(U8={"あ","い","う","え","お"},O9="まで"),IF(OR(O9={"朝","昼","夕"}),"まで",""),"まで") ユーザー定義関数の場合は Function strCheck(U8, O9) If U8 = "あ" Or U8 = "い" Or U8 = "う" Or U8 = "え" Or U8 = "お" Then If O9 = "まで" Then strCheck = "" ElseIf O9 = "朝" Or O9 = "昼" Or O9 = "夕" Then strCheck = "まで" Else strCheck = "" End If Else If O9 = "まで" Then strCheck = "" ElseIf O9 = "朝" Or O9 = "昼" Or O9 = "夕" Then strCheck = "まで" Else strCheck = "まで" End If End If End Function セルに書き込むのは一緒。 こーゆーやつの仕様は文章よりも表にした方がわかりやすいかもですよ。

その他の回答 (2)

回答No.2

IF関数で書く場合 セルQ9に =IF(OR(U8={"あ","い","う","え","お"},O9={"まで","朝","昼","夕"}),IF(OR(O9={"朝","昼","夕"}),"まで",""),"まで") --------------------------------------- VBAマクロというか、ユーザー定義関数(Sub じゃなくて Function とすると、セルに「=ユーザー定義関数名(引数)」を書いて使えます)でいいと思うんだけど VBEでモジュールに記述するのが Function strCheck(U8, O9) If U8 = "あ" Or U8 = "い" Or U8 = "う" Or U8 = "え" Or U8 = "お" Then If O9 = "朝" Or O9 = "昼" Or O9 = "夕" Then strCheck = "まで" Else strCheck = "" End If Else strCheck = "まで" End If End Function で、セルQ9に =strCheck(U8,O9) と書く セルU8とO9の値を、ユーザー定義関数strCheck(U8,O9)で処理させ、戻り値(空白か"まで")がセルに表示されます この手の処理なら、マクロを設定して呼び出すより「ユーザー定義関数」で使う方が簡単だと思いますよ。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

U8=(上記以外の文字が入った場合)でO9=(朝 昼 夕)以外の時の表示はなんですか? それによって式が変わります。 ""の場合は =IF(OR(U8={"あ","い","う","え","お"},NOT(O9={"朝","昼","夕"})),"","まで") "○"の場合は =IF(OR(U8={"あ","い","う","え","お"},O9="まで"),"",IF(O9={"朝","昼","夕"},"まで","○") VBA(ユーザー定義関数)の場合 Function XIF(RG1,RG2 As Range) Select Case RG1 Case "あ","い","う","え","お" XIF = "" Case Else Select Case RG2 Case "まで" XIF = "" Case "朝","昼","夕" XIF = "まで" Case Else XIF = "○" End Select End Select End Function として Q9=XIF(U8,O9) とする。

pop2003
質問者

お礼

早速の返答ありがとうございます!分かりやすく回答していただき嬉しかったです。

関連するQ&A

専門家に質問してみよう