Categories: Excel

ExcelのVBA(マクロ)でIf to Then~Elseを使用して条件付けする方法

ExcelのVBA(マクロ)でIf to Then~Elseを使用して条件付けする方法 | office 365

このページを閲覧している方におすすめの商品

If~Then~Else を使用した条件分岐

構文

If 条件式 Then

 条件式が成立した場合に実行する処理

Else 

 条件式が成立しなかった場合に実行する処理

End If

式を判別し、条件が満たされた場合は、後続のアクションを実行します。式が満たされていない場合は、それ以外の場合以降に実行してください。

条件式は、True または False を返す数式または文字列式です。比較演算子と論理演算子を使用できます。

If 条件式 Then

 条件式が成立した場合に実行する処理

End If

それ以外の場合以降は省略できます。

構文はフローチャート(フロー図)で表されます。条件付き結果によって実行される処理は分岐されます。

式が True の場合、”A” が実行されます。一方、Falseの場合は「B」が実行されます。

比較演算子

比較演算子 “>” または “=” を使用して、条件式内の値を比較できます。条件式で使用できる比較演算子については、次の表を参照してください。

比較演算子 意味 読み方
A > B A は B より大きい。 ダイナリ
A >= B AがB以上 はるかに等しい
A < B A は B より小さい。 ショナリ
A < = B AがB以下 等しくない
A = B A は B に等しくなります。 等しい、等しい
A <> B A と B は等しくありません。 山括弧以下

論理演算子

論理演算子は、複数の条件において「すべての条件が満たされている」か「1つの条件」が満たされているかなどを判断する場合に使用します。

条件式で使用できる論理演算子については、以下の表を参照してください。

論理演算子 意味 読み方
A と B A と B (A と B の両方を満たす) そして
A または B A または B (A または B のいずれかを満たす) オア
Aではない Aではない 結び目

ユースケース

VBA コードで If to Then-Else を使用する方法について説明します。

上の図では、スコアの結果が名前ごとに入力されています。B2 セルが 70 ポイント以上の場合は、C2 セルが “合格” し、それ以外の場合は “失敗” であることを VBA に書き込みます。


Sub sample()

    If Cells(2, 2) >= 70 Then
    
        Cells(2, 3) = "合格"
        
    Else
    
        Cells(2, 3) = "不合格"
        
    End If

End Sub

VBAの「If to Then~Else」を使ったサンプルです。

  • ライン 2: Cells(2, 2) > = 70 は、B2 セルが 70 ポイント以上かどうかを決定する式です。
  • 行 3: B2 セルが 70 ポイント以上の場合は、C2 セルに「パス」と入力します。
  • 行 5: B2 セルが 70 ポイント以下の場合は、C2 セルに「失敗」と入力します。

使い方 ~その後~その他(練習)

実際にExcelのVBAでIf〜Then〜Elseを使って条件分岐をしてみましょう

作業時間:5分

Visual Basic Editor (VBE) の起動

VBE (Visual Basic Editor) を起動して VBA コードを記述します。(1) 選択[Development]をタップしてリボンからタブを押します (2)[Visual Basic].

ソースコードを入力して実行する

ビジュアルベーシックエディタが起動すると、(1)[Double click]ターゲットシートに、(2)ソースコードを書き込んで(3)を押します。[▶]ボタン。※ソースコードについては、記事中の「ユースケース」をご参照ください。

VBA (マクロ) の実行結果

VBA を実行した後にシートに戻ると、この例では、C2 セルに “Pass” と入力されています。VBA If文においてB2セルが70点以上であったか否かを判定した結果、条件を満たす演算を実行した。

ElseIf を使用した多条件分岐

ElseIf ステートメントは、複数の条件によって 3 つ以上の操作に分岐する場合に使用します。複数の条件式で決定することができ、3つまたは4つ以上のプロセスに分岐することも可能である。

ElseIf ステートメントには次のように記述されています。

If 条件式1 Then

 条件式1が成立した場合に実行する処理

ElseIf 条件式2 Then

 条件式2が成立した場合に実行する処理

Else 

 どの条件式も成立しなかった場合に実行する処理

End If

式 1 を決定し、条件が満たされた場合は、最新の Thien 以降の処理を実行します。条件式1が満たされない場合は、以下の条件式2が判定され、条件が満たされていれば、直近のThien以降の処理が実行される。すべての条件式が満たされていない場合は、それ以外の場合は後で実行してください。

複数の ElseIf ステートメントは、4 つ以上の操作に分岐できます。

構文はフローチャート(フロー図)で表されます。式1と数式2の判定結果によって実行される処理が分岐する。

式 1 が True の場合、”A” は実行utes と false は条件式 2 を決定します。式 2 が True の場合、”B” が実行され、false の場合は “C” が実行されます。

上の図では、スコアの結果が名前ごとに入力されています。B2セルが80点以上の場合は、VBAにC2セルに「◎」、60点以上であれば「○」、1つでない場合は「×」と書きます。


Sub sample()

    If Cells(2, 2) >= 80 Then
    
        Cells(2, 3) = "◎"
        
    ElseIf Cells(2, 2) >= 60 Then
    
        Cells(2, 3) = "○"
        
    Else
    
        Cells(2, 3) = "×"
        
    End If

End Sub

このサンプルでは、VBA で “ElseIf” を使用しています。

  • ライン 2: Cells(2, 2) > = 80 は、B2 セルが 80 ポイント以上かどうかを判断する最初の式です。
  • ライン3:B2セルが80点以上の場合は、C2セルに◎と入力します。
  • 行 4: Cells(2, 2) > = 60 は、B2 セルが 60 ポイント以上かどうかを決定する 2 番目の式です。
  • ライン5:B2セルが60点以上の場合は、C2セルに「○」と入力する。
  • 行 7: B2 セルが 60 ポイント以下の場合は、C2 セルに×を入力します。

論理演算子を使用して複数の条件(および)を設定する方法

複数の条件式がすべて満たされているかどうかを判断する場合は、論理演算子 And と If を結合します。

そして、if文で用いるものは、以下のように記述される。


If 条件式1 And 条件式2 Then

 条件式1と条件式2の両方とも成立した場合に実行する処理

Else

 条件式1と条件式2のいずれか成立しない場合に実行する処理

End If

条件式1と数式2がそれぞれ決定され、両方の条件が満たされていれば、その後の処理が行われる。式 1 または式 2 のいずれかが満たされない場合、それ以外の場合以降。

フローチャート(フロー図)におけるAnd処理の流れのイメージとして表した。式1と数式2の判定結果によって実行される処理が分岐する。

式1が真である場合、式2が決定される。式 2 が True の場合、”A” が実行されます。式 1 または式 2 のいずれかが False の場合は、”B” を実行します。

上の図では、名前ごとに「日本語」「数学」「英語」の結果が入力されています。VBA では、B2、C2、および D2 セルのすべてに E2 セルを “合格” させるポイントが 80 以上あり、それ以外の場合は “不合格” であると記述します。


Sub sample()

    If Cells(2, 2) >= 80 And Cells(2, 3) >= 80 And Cells(2, 4) >= 80 Then
    
        Cells(2, 5) = "合格"
        
    Else
    
        Cells(2, 5) = "不合格"
        
    End If

End Sub

これはVBAで “And”を使用したサンプルです。

  • ライン2:セル(2,2)>=80」、「セル(2,3)>=80」、「セル(2,4)>=80」と連結し、全てが80点以上であるか否かを判定する。
  • 行 3: B2、C2、および D2 セルがすべて 80 ポイント以上の場合は、E2 セルに「合格」と入力します。
  • 行 5: B2、C2、または D2 セルのいずれかが 80 ポイント以下の場合は、E2 セルに「失敗」と入力します。

論理演算子を使用して複数の条件(または)を設定する方法 または

複数の条件式のいずれかを満たすかどうかを判断する場合は、論理演算子 Or と If を結合します。

If ステートメントで使用される OR は、次のように説明されています。


If 条件式1 Or 条件式2 Then

 条件式1か条件式2のどちらかが成立した場合に実行する処理

Else

 条件式1と条件式2の両方とも成立しない場合に実行する処理

End If

条件式1と数式2がそれぞれ決定され、1つでも条件が満たされれば、その後の処理が実行される。式 1 も式 2 も満たされない場合は、else 演算とそれ以降の演算を実行します。

フローチャート(フローチャート)ではOrの処理の流れのイメージとして表現した。式1と数式2の判定結果によって実行される処理が分岐する。

式 1 が True の場合、”A” が実行されます。条件式 2 を決定する場合は false。式 2 が True の場合、”A” が実行されます。式 1 と式 2 はどちらも False に対して “B” を実行します。

上の図では、名前ごとに「日本語」「数学」「英語」の結果が入力されています。VBA に、B2、C2、または D2 セルのいずれかが E2 セルが 80 ポイント以上であれば “合格” し、それ以外の場合は “不合格” と書き込みます。


Sub sample()

    If Cells(2, 2) >= 80 Or Cells(2, 3) >= 80 Or Cells(2, 4) >= 80 Then
    
        Cells(2, 5) = "合格"
        
    Else
    
        Cells(2, 5) = "不合格"
        
    End If

End Sub

VBAで「Or」を使用したサンプルです。

  • ライン 2: セル(2, 2) >= 80″ “セル(2, 3) >= 80” と “セル(2, 4) > = 80” を OR と連結し、1 つが 80 ポイント以上かどうかを判断します。
  • 行 3: B2、C2、または D2 セルが 80 ポイント以上の場合は、E2 セルに「パス」と入力します。
  • 行 5: B2、C2、および D2 セルがすべて 80 ポイント以上でない場合は、E2 セルに「失敗」と入力します。

if文を入れ子にする方法

If ステートメントには、さらに多くの If ステートメントを入れることができます。これは、if ステートメントのネストと呼ばれます。

if ステートメントのネストは、次のように説明されています。


If 条件式1 Then

 If 条件式2 Then
  
  条件式1かつ条件式2が成立した場合に実行する処理
    
 Else

  条件式1は成立するが、条件式2が成立しない場合に実行する処理

 End If

Else

 条件式1が成立しない場合に実行する処理

End If

まず、式1を決定し、条件が成立すれば条件式2を決定する。そうでない場合は、最後の Else またはそれ以降のアクションを実行します。

式 2 を決定し、条件が満たされている場合は、最新の Thien 以降の処理を実行します。式 2 が満たされない場合、最新の Else 操作とそれ以降の操作が実行されます。

構文はフローチャート(フロー図)で表されます。式1の判定結果によって実行される処理d式2は分岐する。

式1が真である場合、式2が決定される。False の場合は、”C” を実行します。式 2 が True の場合、”A” が実行されます。”B” を実行する場合は false。

上の図では、目的地ごとに旅費が入力されています。B2セルが10万円以下の場合はC2セルで「検討」、10万円を超える場合は「節約」、7万円未満の場合は「プラン」。


Sub sample()

    If Cells(2, 2) 

これは、VBA で If ステートメントの入れ子を使用したサンプルです。

  • 行 2: “セル (2, 2)
  • 行 3: “セル (2, 2)
  • 行 3: B2 セルが 70,000 円以下の場合は、C2 セルに「プラン」と入力します。
  • 6行目:B2セルが10万円未満で7万円を超える場合は、C2セルに「レビュー」と入力します。
  • 9行目:B2セルが10万円以上の場合は、C2セルに「節約額」と入力します。

Tanaka

View Comments

  • I am a website designer. Recently, I am designing a website template about gate.io. The boss's requirements are very strange, which makes me very difficult. I have consulted many websites, and later I discovered your blog, which is the style I hope to need. thank you very much. Would you allow me to use your blog style as a reference? thank you!

  • Я просто обожаю просматривать раздел с led гирляндами на neoneon.ru. Они такие разнообразные и красочные! Мои вечеринки и праздники теперь всегда сопровождаются волшебством света благодаря этому сайту - [url=https://neoneon.ru/]неон цветной[/url]

  • Чтобы получить 6000 рублей, мне не пришлось искать поручителей или собирать кучу документов. Все-займы-тут.рф предоставил мне [url=https://все-займы-тут.рф/]займ на карту без отказа[/url] в минимальные сроки. Впечатляет список МФО и подробная информация для заемщиков. Я безусловно рекомендую этот сайт для решения ваших финансовых проблем!

  • When I originally commented I clicked the "Notify me when new comments are added" checkbox and now each time a comment is
    added I get three e-mails with the same comment.
    Is there any way you can remove people from that service?
    Thanks!

  • Today, I went to the beach with my children. I found a sea shell and gave it to my 4 year old daughter and
    said "You can hear the ocean if you put this to your ear." She put the shell
    to her ear and screamed. There was a hermit crab inside and it pinched her ear.
    She never wants to go back! LoL I know this is totally off topic but I had to
    tell someone!

  • Как только мне понадобилось усилить присутствие своего проекта в поисковых системах, я решил сотрудничать с компанией https://seo-prodvijenie-v-msk.ru. Результаты наступили оперативно: увеличение органического трафика и постоянный рост позиций сайта. Команда экспертов обеспечила нацеленный на результат подход и разработала детализированную стратегия продвижения. Рекомендую как надежного партнера в SEO-продвижении.

  • Заказал металлическую дверь недавно - качество на высоте и улучшенная защита для моего дома. Установка заняла совсем немного времени, а уровень шумоизоляции оказался намного лучше ожидаемого. Внешний вид двери идеально сочетается с внешним видом моего дома. Советую к покупке!.

  • Когда мы потеряли близкого человека, сотрудники https://complex-ritual.ru/ проявили максимум сочувствия и помогли организовать достойные похороны. Они полностью взяли на себя организацию: ритуальные процедуры, транспортировку, оформление документации. Работа выполнена на высочайшем уровне: вежливый персонал, пунктуальность, внимание к деталям. Цены более чем приемлемые для такого высокого уровня сервиса. Рекомендуем эту компанию - в трудный час они окружат вниманием и заботой.