Excel

【初心者でもわかる】Excel VBAブログ – Day 3: 条件分岐とループの活用

Day 3では、Excel VBAにおける条件分岐とループの活用方法について詳しく学んでいきます。これらのテクニックを使うことで、プログラムの流れを制御し、複雑な処理を自動化できます。Excel VBAのパワフルな機能を活かして、効率的な作業を実現しましょう!

・条件に応じた処理を行いたいが、手動で判断は手間がかかるな。
・ループ処理を使って繰り返しの作業を自動化したいが、どのように実装すれば良いのか分からない

こんな悩みを解決します!

このブログの対象者:
・Excel VBAの基礎を学び、条件分岐やループ処理について詳しく知りたい初心者から中級者の方
・データの処理や分析を効率化し、繰り返し作業を自動化したいと考えている方
・条件に基づいた特定の処理を行いたいと思っているExcelユーザー

🚀 0円で現役エンジニアから学べる【Techスクールオンライン】のお申込みをお勧めします。 このオンラインスクールでは、現役のエンジニアから直接学ぶことができ、プログラミングの基礎から高度なスキルまでを習得できます。しかも、今なら 0円 で受講できるチャンスです。 エンジニア転職を考えている方やプログラミングに興味がある方、新しいスキルを習得したい方に特におすすめです。

条件分岐の活用:

  • 条件分岐の基本的な構文と使い方を解説します
  • If文とSelect Case文の違いについても触れます
  • 具体例: 数値データの範囲に応じてグレードを付けるプログラム

条件分岐の具体例


以下の具体例では、数値データの範囲に応じてグレードを付けるプログラムを作成します。
まず最初に、表のようなExcelのシートを作成します。

この表の合計売上に対して、評価をするVBAのプログラムを作成します。コードは下記となります。売上のScoreに応じて、ランクを設定するようにします。

Sub GradeAssignment()
    Dim score As Integer
    Dim grade As String
    
    score = Range("B9").value ' A1セルの値を取得
    
    If score >= 500 Then
        grade = "A"
    ElseIf score >= 400 Then
        grade = "B"
    ElseIf score >= 400 Then
        grade = "C"
    ElseIf score >= 200 Then
        grade = "D"
    Else
        grade = "F"
    End If
    
    Range("C2").value = grade ' B1セルにグレードを表示
End Sub




このプログラムでは、B2セルに入力された数値に基づいて、条件に応じたグレードを判定します。500以上ならば”A”、400以上ならば”B”、300以上ならば”C”、200以上ならば”D”、それ以下ならば”F”のグレードが割り当てられます。最終的なグレードはC2セルに表示されます。

今回の内容でプログラムを実行すると、このようにDと表示されます
Excelの関数でも実行できますが、複数で繰り返し作業を行う場合は、これらのVBA操作を覚えておくと便利です。

この具体例を通じて、条件分岐の基本的な構文と使い方を学びました。次はループの活用方法について見ていきましょう。

ループの活用:

  • ループ処理の基本的な構文と使い方を紹介します
  • For文とDo…Loop文の違いと使いどころについても説明します
  • 具体例: 従業員リストから特定の条件を満たす従業員のデータを抽出するプログラム

ループ処理を使うと、同じ処理を繰り返し実行することができます。Excel VBAでは、複数のセルに対して同じ操作を行ったり、特定の条件を満たすデータを抽出したりする際に役立ちます。

ループ処理を使った具体例


以下の具体例では、従業員リストから特定の条件を満たす従業員のデータを抽出するプログラムを作成します。
まず事前にExcelに名前とDepartment の表を作成します。この名前に応じて、Departmentを表示させるプログラムを、Select Caseを用いて作成します。

表にこのように名前と部署のセルを作成します。コードは下記になります。下記コードを実行すると、

プログラムコード

Sub EmployeeDataExtraction()
    Dim employeeList As Range
    Dim cell As Range
    Dim employeeName As String
    Dim department As String
    
    Set employeeList = Range("B2:B10") ' 従業員リストの範囲を指定
    
    For Each cell In employeeList
        employeeName = cell.value ' セルの値を取得
        
        ' 従業員名に基づいて部署を取得
        Select Case employeeName
            Case "John"
                department = "Sales"
            Case "Emily"
                department = "Marketing"
            Case "Michael"
                department = "Finance"
            Case Else
                department = "Unknown"
        End Select
        
        ' 部署を隣の列に表示
        cell.Offset(0, 1).value = department
    Next cell
End Sub

このように名前に応じて、Departmentが表示されるようになります。

このプログラムでは、B2からB10までの範囲にある従業員リストを順番に処理します。各セルの値を取得し、従業員名に基づいて該当する部署を判定します。従業員名が”John”ならば”Sales”、”Emily”ならば”Marketing”、”Michael”ならば”Finance”、それ以外の場合は”Unknown”の部署が割り当てられます。部署は隣の列に表示されます。

この具体例を通じて、ループ処理の基本的な構文と使い方を学びました。条件分岐とループの活用により、複雑な処理や大量のデータの操作が可能になります。

まとめ

今日は条件分岐とループの活用方法について学びました。条件分岐を使ってプログラムのフローを制御し、ループ処理を使って同じ処理を繰り返し実行することができます。具体例を通じて、それぞれの機能の基本的な構文と使い方を理解しました。

次回は、関数とサブルーチンの作成方法について詳しく解説します。Excel VBAを使ったさまざまなタスクの自動化がますます楽しくなるでしょう!

お楽しみに!✨

🚀 0円で現役エンジニアから学べる【Techスクールオンライン】のお申込みをお勧めします。 このオンラインスクールでは、現役のエンジニアから直接学ぶことができ、プログラミングの基礎から高度なスキルまでを習得できます。しかも、今なら 0円 で受講できるチャンス。
私がツナグバに登録してから、求人情報が豊富に届き、自分に合った仕事を見つけることができました。特に、第二新卒向けの求人情報が多いので、自分のスキルや経験を活かしながら新たなキャリアに挑戦することができました。転職活動は不安も多いですが、ツナグバのサポートがあれば、成功への道が明るく感じました。