Excelで学べるエンジニアリングスキル：SQL、VBA、データ管理を実務で活かす方法

## **はじめに**
事務職兼秘書の派遣をしているsayagonと申します。  
エンジニアを目指していますが、実務ではエンジニアリングの経験を積む機会が全くありません。  
せっかく学んでも実務で使う機会がなく、時間が経つと忘れてしまうことが多々ありました。
そこで、業務の中で実際に使いながら学ぶことで、効率化しつつスキルアップできるのでは？と考え、試行錯誤を続けてきました。  
今回は、その経験をもとに実践した内容を共有したいと思います。


> **💡 ポイント**
> - 事務作業を効率化しながらエンジニアスキルを学ぶ  
> - VBAや**SQLの知識を活用して**、日々の業務を最適化  
> - システム設計の基礎を学び、業務改善に活かす  
※こちらの記事では、SQLを使っているのではなく、SQLの知識を活用しております。

---

## **💻 学習ステップ**
エンジニアスキルを業務に活かすための学習ステップを、初心者向けに整理しました。

### **1️⃣ Excelの基礎を学ぶ**
- **学ぶ内容**: 関数・フィルタ・ピボットなど  
- **目的**: データ整理や管理の基本を身につける。Excelを使いこなせることが、効率的なデータ管理や分析の基盤となります。
- 赤枠内を扱えるようにしておくとこんな使い方も出来るんだという発見があったりします。それがのちのち役に立ちます。 
![スクリーンショット 2025-02-02 13.16.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3983984/b365263f-6b07-15bf-05ff-0c092a73a14b.png)

### **2️⃣ VBAで業務を自動化する**
- **学ぶ内容**: 繰り返し作業の自動化、Outlook連携、データ抽出 
- **目的**: 手作業を減らし、作業時間を大幅に短縮する。VBAを使うことで、単純作業を効率化し、集中すべき業務にリソースを振り向けることが可能になります。  プログラムコードの記述や読み方に慣れることも重要です。

#### **具体的な自動化例**
- **Outlookと連携したメール一括送信**
- **ファイルの振り分け・ファイル名・フォルダ名の変更**
- **別のエクセルから特定の列のみデータを抽出・既存データとの照合**
- **ユーザーフォームを使ってUIの勉強をしつつSQLで使われる登録・変更・削除・参照機能**

> **📝 実例**
> - 前任者は、毎月先月のフォルダをコピペして今月分のフォルダを作成後に必要箇所を一つずつ変更していたため、非常に手作業が多く非効率でした。VBAを使って業務の効率化を図り、4時間かかっていた作業が15分で完了するようになりました。 
> このような改善により、大幅な時間短縮が実現し、業務に集中する時間が増えました。

---

## **📊 SQLの考え方を業務に活かす**

### **Excel業務にSQLの知識を応用する**
SQLのデータ処理の考え方は、Excelの関数やデータ整理にも応用できます。  
Excelの業務で「データを抽出」「条件を指定してフィルタ」「集計」「結合」といった作業をする際、SQLの考え方を取り入れることで、より効率的にデータを扱うことができます。

| **SQLの概念**         | **Excelでの応用例**            | **活用シーン**          |
|----------------------|----------------------|--------------------|
| `SELECT * FROM table` | `フィルタ機能 / FILTER関数` | データを特定の条件で取得 |
| `WHERE 条件`         | `IF関数 / COUNTIF関数` | 条件付きのデータ抽出 |
| `GROUP BY`          | `SUMIF関数 / COUNTIF関数` | グループごとの集計 |
| `JOIN`              | `VLOOKUP / INDEX+MATCH` | データの統合 |

例えば、以下のような場面でSQLの知識が活かせます。  
✅ **Excelで大量のデータを管理する際、「WHERE」句の考え方を活用し、条件付きの抽出をスムーズに行う**  
✅ **売上データを「GROUP BY」のように集計し、SUMIFやピボットテーブルでカテゴリ別の売上を分析する**  
✅ **複数のデータセットを統合する際、SQLの「JOIN」の考え方を意識し、VLOOKUPやINDEX+MATCHを適切に使い分ける**  

SQLの知識を持っていると、Excel業務のデータ処理をよりロジカルに、無駄なく行うことができます。

---

### **VBAにSQLの考え方を活かす**
VBAを使ってデータを操作する際にも、SQLの知識が役立ちます。  
特に、データの登録・取得・更新・削除（CRUD操作）を行うときに、SQLの考え方を意識することで、より分かりやすく整理されたコードを書くことができます。

| **操作**       | **SQLの考え方**                                | **VBAでの実装例**              |
|--------------|--------------------------------|------------------------------|
| **登録 (Create)** | `INSERT INTO テーブル (列1, 列2) VALUES (値1, 値2);` | `Rows.Insert`（行の追加） |
| **参照 (Read)**   | `SELECT * FROM テーブル WHERE 条件;`       | `Range().Value`（データ取得） |
| **更新 (Update)** | `UPDATE テーブル SET 列 = 値 WHERE 条件;`   | `Range().Value = "新しい値"` |
| **削除 (Delete)** | `DELETE FROM テーブル WHERE 条件;`        | `Rows.Delete`（行の削除） |

例えば、Excelのシート上でデータを更新・削除するマクロを作成するときは、SQLの『WHERE』句の考え方を取り入れると、対象データを明確にできます。

---

## **💡 まとめ**
- **Excel業務では、SQLの考え方を活用するとデータ処理がスムーズに！**  
- **VBAでデータ操作を行う際も、SQLのCRUD（登録・取得・更新・削除）を意識すると整理されたコードが書ける！**  
- **SQLを直接使わなくても、その知識を持っていることでExcelやVBAのデータ管理が格段に効率化できる！**

---

## **🛠 システム設計の基礎**
VBAやSQLを活用して業務改善を行う際、システム設計の基礎を学ぶと、より効率的に業務を最適化できます。例えば、以下のようなフロー図を作成し、業務の流れを可視化することで、どの部分で効率化が可能かを検討できます。

> **📌 フロー図の作成例**
> 1. ユーザーフォームで入力を受け付ける  
> 2. VBAでデータをExcelシートに書き込む  
> 3. SQLの考え方でデータを整理し、効率的に管理する  

フロー図を使って業務の流れを可視化することにより、全体像を把握し、改善が必要な箇所を特定しやすくなります。
こちらにつきましては、最初から完璧を求めず、少しずつ取り入れていきましょう

---

## **📢 まとめ**
- **Excel、VBA、SQLを組み合わせることで、実務でエンジニアスキルを磨くことが可能**  
- **業務効率化をしながら学ぶことで、スキルの定着率が向上**  
- **システム設計の基礎を身につけると、より高度な改善が可能**  
- **慣れてきたら、VBAでOutlookと連携したメール送信を行い、メール文をHTML+CSSでデザインをする**
  - より見やすいメールを作成し、社内・社外のやり取りを効率化する 
  - 業務の幅を広げ、他のシステムとの連携力を高めるために学ぶ  
- **効率化できることがなくなったら、今まで作成したマクロを今度はPythonを使って書いてみよう！！**
  - Pythonなら、Excelだけでなく、データ分析やWebスクレイピングなど、さらに幅広い業務の効率化が可能になります。　   
- **VBAもSQLも他のプログラミング言語でも、やっていることは基本的に同じ**  
  - 言語の違いはあれど、目的は「データ操作」「自動化」「業務の効率化」といった共通のゴールに向かっています。コードは違えど、考え方の本質は変わらないので、一度身につけたスキルは他の言語にも応用できます。

---

## **学習ステップ**
1. **Excelの基礎を学ぶ**（関数・フィルタ・ピボットなど）  
2. **VBAで業務を自動化する**（繰り返し作業の効率化）  
3. **SQLを学び、データ管理を強化する**（VBAのデータ処理に活かす）  
4. **システム設計を学ぶ**（業務全体の最適化を考える）

### **順番の理由**
- **Excel → VBA**: すでにExcelを使っているため、VBAは比較的理解しやすく、学びやすいです。
- **VBA → SQL**: VBAを学ぶと「もっとデータをうまく扱えないか？」という疑問が生まれるため、SQLを学ぶことでデータ管理の視点が広がります。
- **SQL → システム設計**: SQLでデータを効率的に扱えるようになった後は、業務全体の最適化を意識してシステム設計の基礎を学びます。

---

### **最後に**
仕事をしながらエンジニアリングスキルを学ぶことにフォーカスした記事を書かせていただきました。
これは仕事中の学習方法の一例です。プライベートでは、MySQLやLinuxコマンドの習得など、業務ではできない分野に挑戦するのもおすすめです。