Excel

【初心者でもわかる】Excel VBA入門 – マクロの基本操作Day 1

Excel VBA入門シリーズの第1日目にようこそ!このブログでは、初心者の方に向けてExcel VBAの基礎を学ぶための記事を提供しています。もし、Excelでの作業が多く、手間や時間を節約したいとお悩みの方にぴったりのコンテンツです。本日は、Excel VBAの基本操作である「マクロ」について学んでいきましょう。

・Excelでの作業が多く、繰り返し行うタスクに時間を取られてしまう
・複雑な処理や条件に基づくデータの抽出が難しく、効率化したい
・プログラミングやVBAに初めて触れるため、分かりやすく解説された情報を求めている

【このブログの対象者】
 ・Excel VBAに初めて触れる方や基礎を学びたい方
 ・プログラミング経験がないが、繰り返し作業を行っている人
 ・繰り返しでExcel作業をしている方

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

マクロを使って、実際にVBAを試してみる(FindAndFilterData)


Excel VBAでは、特定の作業を自動化するために関数(マクロ)を作成します。マクロは、Excel内で特定の操作を記録し、再生することができる機能です。以下は、関数(マクロ)の構文の例です。

関数の構文

関数については、Subで宣言します。

Sub 関数名()
 ' ここにコードを記述します'
 End Sub


具体例として、特定の条件に基づいてデータを抽出し、フィルタリングするVBA関数をご紹介しましょう。

FindAndFilterDataの使用例

こちらの機能は指定した条件に基づいてデータを抽出してフィルタリングします。

例えば、このように商品の売上数量、単価、売上金額を記載したSheetを準備します。別シートに、抽出データを作成しておきます。

例えば、売上データの中から売上が一定金額以上のデータを抽出する場合、以下のようなコードを書くことができます。今回は、Criteriaに15,000,000円を設定します。

Sub FindAndFilterData()
    Dim rng As Range
    Dim criteria As Double
    ' 抽出条件を設定
    criteria = 15000000
     ' データの範囲を指定
    Set rng = Range("A1:D10")
     ' 条件に基づいてデータを抽出
    rng.AutoFilter Field:=4, Criteria1:=">=" & criteria
    ' 抽出したデータの範囲を取得
    Dim filteredRange As Range
    Set filteredRange = rng.SpecialCells(xlCellTypeVisible)
    ' 抽出したデータを別のシートに貼り付け
    Dim destinationSheet As Worksheet
    Set destinationSheet = Sheets("抽出データ")
    filteredRange.Copy destinationSheet.Range("A1")
    ' フィルタリングを解除
    rng.AutoFilter
    MsgBox "データの抽出が完了しました!"

End Sub

このコードを下記の再生ボタンで、実行すると、

Msgbosに”データの抽出が完了しました”と出ます。

抽出データのシートを開いてみると、15,000,000円以上のFilterされた商品が抽出されています。
C以外はすべて、15,000,000円以上なので、抽出されています。

このコードでは、特定の条件に基づいてデータを抽出し、別のシートに貼り付ける処理を自動化しています。これらを自動で作成することができるようになります。

また、商品A, 商品BでFilterするコードは下記のようになります。これで実行すると、

Sub FindAndFilterData()
    Dim rng As Range
    Dim criteria As Double
    ' 抽出条件を設定
    criteria = 15000000
     ' データの範囲を指定
    Set rng = Range("A1:D10")
     ' 条件に基づいてデータを抽出
    rng.AutoFilter Field:=1, Criteria1:="商品A", Operator:=xlOr, Criteria2:="商品C"
    ' 抽出したデータの範囲を取得
    Dim filteredRange As Range
    Set filteredRange = rng.SpecialCells(xlCellTypeVisible)
    ' 抽出したデータを別のシートに貼り付け
    Dim destinationSheet As Worksheet
    Set destinationSheet = Sheets("抽出データ")
    filteredRange.Copy destinationSheet.Range("A1")
    ' フィルタリングを解除
    rng.AutoFilter
    MsgBox "データの抽出が完了しました!"

End Sub

商品A, 商品Cの抽出データが作成されます。

まとめ


今日はExcel VBAの基本操作である「マクロ」について学びました。Excel VBAは、Excelでの作業を効率化し、繰り返し行う手作業を自動化するのに役立ちます。次回以降も、簡単なコードと具体例を使って、VBAの使い方を詳しく解説していきます。

もし、Excel作業に時間を取られてしまったり、効率化したいと感じている場合は、ぜひこのブログシリーズをご覧ください。Excel VBAの基礎を学びながら、作業効率を向上させる方法を身につけましょう。次の日の記事もお楽しみに!

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