ExcelとVBAの入門解説
エクセルの神髄

マクロVBA情報を中心に、エクセル関数・基本操作までサンプルとともに解説
最終更新日:2020-02-24

本サイトについて

エクセル(Excel)およびマクロVBA全般について、入門解説から上級者に役立つ技術情報まで幅広く発信しています。

「Excel全般」は、エクセルの操作と関数を基礎から応用まで。
「マクロVBA入門編」は、入門・基礎として、VBA未経験者でも理解できるように詳しく説明しています。
「マクロVBA応用編」は、VBA経験者(中級・上級)向けの技術解説およびVBAサンプルを豊富に揃えています。

※本サイトはリンクフリーです、ご自由にどうぞ。

サイト全体の更新情報・お知らせ

ロリポップサーバーをハイスピードプランに変更しました。
ページの表示速度は以前より早くなっています。
新シリーズ「SQL入門」を開始しました。
DBは扱いやすいようにSQLiteを採用しています。
SQL初心者向けに基礎から解説します。
PC版の上部メニューをドロップダウン形式にしました。
マクロVBAのメニュー構成も若干変更しています。
VBAコードのコピーボタンを設置しました。
サイトの文字コードをUTF-8に変更しました。
この際に使ったVBAコードも掲載しています。
Shift_JISのテキストファイルをUTF-8に一括変換
サイト全体をリニューアルしました。
横幅を広げ、文字も少し大きくしました。
サイト全体をHTTPS化(常時SSL)しました。
HTTP/2プロトコルにより、レスポンス速度が向上しています。
ブックマークしている場合は、HTTPSへ変更してください。
新シリーズとして、「MOS VBAエキスパート対策」を開始しました。
MOS VBAエキスパートの、ベーシック、スタンダード合格に必要なVBAの解説です。
「2020年小学校プログラミング必修化」、大人はVBAから始めてみましょう。
最も閲覧されているのが、「マクロVBA入門」です。
最初に書き始めてから7年近く経過しています。
第1回から順次見直し誤字脱字の修正をしつつ、必要に応じ説明文を追加しています。
久しぶりの大型記事を書き始めました。
オセロを作りながらマクロVBAを学ぼう
オセロ作りを通して、思考整理しVBAプログラミングの学習が目的です。
遅ればせながら、Google スプレッドシート の入門編を開始します。
ゆくゆくは、Google Apps Scriptの神髄にまで迫りたいと思います。
各ページの本文右上に、最終更新日を追加しました。
元ファイルの更新日ですので、公開日とは若干違う場合があります。
誤字脱字だけの修正をしている場合もあります。
久しぶりの新企画をスタート、ExcelマクロVBA再入門
理屈は最低限に、とにかくマクロVBAが書けるようになることが目的です。
スマホ対応サイトへリニューアルしました。
いわゆるレスポンシブCSSを使ったものとなっています。
これにともない、イメージも一新しました。
1年ほど前にフォルダ構成を変更し、2ヶ月前に旧ファイルを削除しました。
サイト内のリンクが消えても、Googleクロールエラーが無くなりません。
そこで、旧URLは301リダイレクトを設定しました。
各ページのレイアウトを少し変更しました。
行間を広くしたので読みやすくなったと思います。
※サイトのタイトルを「エクセルの神髄」としました。
「神髄」は本質、奥義の意味です。基本の積み重ねこそが奥義です。
サイト構成をエクセル中心に変更しました。
従来のトップページは、★旧トップページ★よりお入りください。
都合により、フォルダ構成を変更しました。
旧URLは、しばらく残しますが、いずれ削除予定です。
ブックマーク等をしている場合は変更をお願いいたします。
独自ドメイン取得しました。
エクセル色を強めました。
全体的にリニューアルしました。
使い易くなっていれば良いのですが。

エクセル新着記事NEW・・・新着記事一覧をもっと見る

ツイッターのお題「君の名は?」|エクセル雑感(2月24日)
ツイッターで出題されたVBAの問題をやってみました。ツイッターのエクセルおよびVBA関係の人達の間で問題を出し合うという事が行われています。今回のお題は以下になります。ツイートへのリンク お題:君の名は? "-"ちゃんの名前がわかりません!教えてください。
セルの数式をネスト色分けしてコメント表示|VBAサンプル集(2月24日)
数式のネストが3段階を超えてくる、なかなか読むのが辛くなってきます。数式を改行したりして見やすくするにも限界があります。特別に複雑な数式を解析する場合は、以下を試してみてください。Excelシートの複雑な計算式を解析するVBA このようなツールを使うほどではないが、数式を色分けしてちょっと見やすくなれば、
スピルを使って日付の一覧を出力|エクセル挑戦問題(2月22日)
エクセル挑戦問題 2019年にOffice365のExcelに実装された革新的な機能としてスピルがあります。スピルを上手に使うと、今まで多くの作業列を使う必要があったり、とても難しい配列数式にしなければならなかったものが、かなり簡略化された数式で実現することができます。
簡易音楽プレーヤーの作成|ユーザーフォーム入門(2月22日)
VBAにも音楽を!ということでVBAで音楽再生するVBAクラスを作成しました。VBAで音楽再生するクラスを作成 そこで、このクラスを使い簡易的な音楽プレーヤーを作ってみました。あまり本格的なものは作れませんし、良いソフトが沢山ありますので自作しても仕方ありません。
VBAで音楽再生するクラスを作成|VBA技術解説(2月22日)
VBAにも音楽を!ということでVBAで音楽再生をしてみることにしました。VBAでの音楽再生方法はいろいろありそうですが、多くの環境で動くのではないかという事でAPIを使いました。mciSendString このAPIで音楽再生します。
セル結合なんて絶対に許さないんだからね|VBAサンプル集(2月17日)
セル結合の弊害はネットに溢れているのでここで改めて説明の必要はないでしょう。とはいえ、ついついセル結合してしまう事ありますよね、人間だからね。VBAで適切に処理すればセル結合もきちんと処理は可能です。
セル結合/解除でセル値を退避/回復|VBAサンプル集(2月16日)
セル結合の弊害はネットに溢れているのでここで改めて説明の必要はないでしょう。とはいえ、セル結合したい場合もありますよね、人間だからね。VBAで適切に処理すればセル結合もきちんと処理は可能です。第85回.結合セルの扱い|VBA入門 しかし、セル結合した時にどうしようもないのが、各セル値が失われてしまうことです。
FILTER関数(範囲をフィルター処理)|エクセル入門(2月11日)
FILTER関数は、定義した条件に基づいてデータ範囲をフィルター処理した結果を返します。FILTER関数はスピル専用の関数となります。最後の方では、表示する列を選択する方法も掲載しています。FILTER関数の書式 =FILTER(配列,含む,空の場合) 配列 必須です。
「VBAで導関数を求めよ」ツイッターのお題をやってみた|エクセル雑感(2月9日)
ツイッターで出題されたVBAの問題をやってみました。ツイッターのエクセルおよびVBA関係の人達の間で問題を出し合うという事が行われています。そんな中、現役高校生と思われる方からVBAの問題が出されました。
Property {Get|Let|Set} ステートメント|VBA入門(2月9日)
VBAでは、カスタムプロパティの作成と操作ができます。クラスモジュール、フォーム、標準モジュール、これらにカスタムプロパティを作成することができます。プロパティを作成するには、Property{Get|Let|Set}ステートメントを使用します。
フィボナッチ数列(再帰呼び出し)|VBA技術解説(2月8日)
フィボナッチ数列は、最初の二項は0,1で、以後は直前の2つの項の和となっている数列です。VBAでフィボナッチ数列を出力してみましょう。もちろん、フィボナッチ数を勉強しようとか、何かに使おうという事ではありません。
エクセルで連立方程式を解く(MINVERSE,MMULT)|エクセル雑感(2月7日)
とつぜん連立方程式を解くことになりました。なぜ連立方程式を解くことになったのか、そして、どうやって答えを導き出したのか… これらを自身の覚え書きの意味も含めて記事にしておきます。ただし、行列の難しい説明は抜かして、どうやって解決したかの経緯の説明が中心になります。
スピルって速いの?スピルの速度について|VBA技術解説(2月4日)
Office365を導入する企業や個人で契約する人もかなり増えてきているようです。自然とスピルや新関数を使う事も増えてくるでしょう。今まで範囲内に同じ数式を入れるときは、絶対参照・相対参照を組み合わせて入れなければならず、これを難しく感じていた人も多いでしょう。
スピルでVBAの何が変わったか|VBA技術解説(2月3日)
Office365にスピルが登場し、2020年1月にはXLOOKUPもリリリースされ、ますますエクセルが便利になってきています。スピルは、これまでにないくらい大幅な機能変更と言えるでしょう。スピルの一般的な説明については以下を参照してください。
スピルについて|エクセル入門(2月3日)
2019年にOffice365のExcelに実装された革新的な機能としてスピルがあります。スピルとは何か、その概要について説明します。以下で、「従来」または「旧」と呼んでいるのはスピルしないエクセルを指しています。
エクセルで「もういくつ寝るとお正月」|エクセル雑感(1月29日)
今日は2020年1月31日です。早いもので1月が終わろうとしています。つまり、2020年も12分の1がすでに終わろうとしています。この調子では、あっという間に今年(2020年)も終わってしまいそうです。
VBAの少数以下の演算誤差について|VBA技術解説(1月29日)
ワークシートで時間計算をしていると、時に不可解な結果に見舞われることがあります。エクセルの時間は、1日を1とした数値で管理されているため、1時間は1の24分の1の数値になります。この少数以下の計算において、エクセルが正しく計算できないというものです。
VBAで写真の撮影日時や音楽動画の長さを取得する|VBA技術解説(1月23日)
写真の撮影日時、音楽や動画の再生時間、これらをVBAで取得します。写真や音楽、動画をフォルダにまとめて入れている人は多いのではないでしょうか。しかし、なかなかちゃんと管理できていなかったりしませんか。
ツイッターで出されたVBAのお題をやってみた|エクセル雑感(1月13日)
ツイッターで出題されたVBAの問題をやってみました。ツイッターのエクセルおよびVBA関係の人達の間では、いろいろと面白く勉強になる問題を出し合うという事が行われています。フォローして参加してみると楽しいと思いますよ。
イベントプロシージャーの共通化(Enter,Exit)|ユーザーフォーム入門(1月13日)
ユーザーフォームのVBAでは、同じイベントプロシージャーを何個も作成することが多々あります。テキストボックスを複数個配置して同じイベント処理を実装する時、全く同じイベントプロシージャーをコピペで何個も作るといったことが必要になります。その解決方法として前回、第23回.イベントプロシージャーの共通化 WithEventを使った方法を紹介しましたが、

エクセル アクセスランキング・・・ランキング一覧をもっと見る

1.最終行の取得(End,Rows.Count)|VBA入門
Excelワークシートにおける表の最終行の取得は、VBAの必須技術になります、エクセルVBAにおける最終行取得の必要性 エクセルは表計算ソフトです、つまり縦横の表を扱います、データは横に項目があり、縦に項目に対するデータが入っている事が一般的です。しかし、そのデータ行数は決まった行数ではない事が普通です。
2.RangeとCellsの使い方|VBA入門
VBAではセルを指定する方法としてRangeとCellsがあります、RangeもCellsも、どちらもRangeオブジェクトでセルを指定するものです。どちらを使ったらよいのでしょうか、どう使い分けたらよいのでしょうか、実際のVBA記述では、RangeとCellsを使い分ける必要があります、RangeとCellsの使い方について解説をします。
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
値の貼り付けと題しましたが、値だけではなく、「形式を選択して貼り付け」のいろいろな指定方法です。セルをコピーして、他のセルに「形式を選択して貼り付け」する場合のマクロVBAコードです。セルの値や書式を別のセルコピーすることはマクロVBAでは定番かつ必須の技術になります。
4.マクロって何?VBAって何?|VBA入門
エクセルのマクロって何でしょうか? ExcelのVBAって何でしょうか? 「マクロ」とは、エクセルの操作を自動化するものです。その自動化する機能が、「マクロ」と呼ばれています。マクロの中身は、プログラムです。
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
Rangeの指定で、あらゆるセルおよびセル範囲は指定できるのですが、マクロで使う場合は、ちょっと使いづらい場合があります。"A1"や"B5"と言うような文字で指定するのでは何かと不便です、もっと、プログラムっぽい(笑)指定方法があります。
6.変数宣言のDimとデータ型|VBA入門
マクロVBA入門者が、まず最初につまずくのが、このDimで変数を宣言することでしょう。変数とは、数値や文字列など(すなわちデータ)を一時的に格納する入れ物 と良く説明されますが、まずはこの考えで良いでしょう。この入れ物には、いろいろなタイプの入れ物があります。
7.繰り返し処理(For Next)|VBA入門
VBAのForNextは、同じ処理を繰り返し行うためのVBA構文です。VBAで繰り返し処理をする方法は何通りかありますが、最も頻繁に使われていて、最も簡単便利であり、まず最初に覚えるべき繰り返し処理のVBA構文がForNextになります。ForNextは、繰り返し処理をするためのステートメントで、同じ処理を複数回繰り返したい場合に使います、
8.セルに文字を入れるとは(Range,Value)|VBA入門
前回実行したマクロを、もう少し詳しく見てみましょう。どうして、これでセルに値がはいるのか、どうやってVBAを読んだらよいのか、少しだけ詳しく解説します。とにかくこれで、A1セルに、「おはよう!」と入る事がわかりました。
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
空白セルの判定は、VBAにおいては頻繁に発生しますが、正しく空白セルを判定する事は以外と難しいものです。そもそも「空白」とはどのような状態なのか… これが、はっきりしない為に何が正しいのかが判然としないことが問題を複雑にしています。以下、A1セルが空白かどうか判定する方法をいくつか紹介します。
10.ひらがな⇔カタカナの変換|エクセル基本操作
「ひらがな」を「カタカナ」に、「カタカナ」を「ひらがな」に変換する方法の説明です。ひらがな→カタカナ変換 A1セル「にっぽんたろう」、これをB1セルに「ニッポンタロウ」と表示するには、B1セルに、=PHONETIC(A1) これで、「カタカナ」で表示されたと思います。
11.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
検索されるキーワードで最も多いのが、MATCH関数 INDEX関数セル範囲から、指定された行と列が交差する位置にあるセルの参照を返します。INDEX関数の書式INDEX(範囲,行番号[,列番号])範囲セル範囲を指定します。セル範囲が1行または1列である場合、行番号または列番号はそれぞれ省略することができます。
12.とにかく書いてみよう(Sub,End Sub)|VBA入門
それでは、とにかく、マクロVBAを書いてみましょう。sub練習1 と入力し、Enterして下さい、このように、subがSubとなり、後ろに()が付きます。そして、下に、EndSubが追加されます。これがマクロです。
13.マクロはどこに書くの(VBEの起動)|VBA入門
さて、ではマクロVBAはどこに書いたらよいのでしょうか。まずは、マクロVBAを書くための紙に相当する編集画面を出します。このマクロVBAの編集画面をVisualBasicEditor、略してVBEと呼びます。
14.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
ワークブックを閉じる場合や保存する場合のVBAの説明です。閉じる時に保存するか保存しないかを指定できます、また、ブックを保存するにも、上書きなのか別ファイルにするのか等によってVBAの記述がそれぞれ違ってきます。ブックを閉じる ブックを閉じるには、WorkbookのCloseメソッドを使用します。
15.Rangeでのセルの指定方法|VBA入門
前回までに出てきたRangeの使い方は、Range("A1") このように書きくことで1つのセルを指定する場合でした。複数のセル範囲を指定する場合、矩形のセル範囲、行全体、列全体、特殊なセル範囲 これらの指定方法を見ていきましょう。複数のセル(矩形のセル範囲) 複数のセル(矩形のセル範囲、)を指定する場合のVBAの書き方です。
16.セル範囲⇔配列(マクロVBA高速化必須テクニック)|VBA入門
セル範囲をVariant型変数に入れる事で、配列を作成することができます。また、配列をセル範囲にまとめて出力する事も出来ます。これは、マクロVBAを高速処理したい時の必須テクニックになります、マクロの処理が遅い場合は、このテクニックが使えないか検討してください。
17.まずはマクロVBAを使う準備|VBA入門
さっそくマクロを作りましょう。と、その前に、準備があります、上部のリボンに、「開発」タブを追加します、「開発」タブには、マクロを開発するにあたって必要なアイコンが並んでいます。※画像は、Excel2013になります。
18.セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)|エクセル関数超技
数式の参照範囲を可変対応させます、つまり、入力データにより自動で拡張・縮小されるように関数を設定します。エクセルの表には、集計等の計算式を入れますが、その集計範囲は固定になっているため、データの追加時には、計算範囲外になってしまったりするので注意が必要になります。
19.定数宣言のConstと型宣言文字|VBA入門
前回は変数を説明しましたが、変数があれば、当然の定数もありConstで宣言します。つまり、変数は値が変わるもの、定数は値が変わらないものです。定数とは、数値や文字列の代わりに使用される、意味を持たせた名前のことです。
20.ブック・シートの指定|VBA入門
ここまでのVBA入門では、アクティブブックのアクティブシートだけを扱ってきました。アクティブブックのアクティブシートとは、一番手前に表示されているブックの選択しているシートで、通常、手作業で操作しているシートの事になります。手作業では、アクティブブックのアクティブシートしか扱えませんが、(作業グループで複数のシートに同時に操作するのは別の話として) アク…

エクセル(Excel)・・・エクセルの基本操作と関数

最低限知っておくべきエクセルの基本操作および関数を、入門基礎から上級者に役立つ実践応用まで紹介しています。

マクロVBA・・・VBAの基礎から実践応用まで

マクロVBAの初級者には基礎から詳しく解説、VBA上級者には実戦で役に立つ情報をお届けしています。

SQL入門・・・VBAでDBを扱うSQLの基礎解説

VBAは覚えたけど膨大なデータ量に苦戦している・・・そんな場合はぜひデータベースの活用を検討してください。

社会的にパソコンで扱うデータ量は近年急激に増えています。
エクセルでは100万行のデータまで扱えますが、実際に100万行もエクセルに入れて計算式を設定したら・・・
動作が重くなってしまい、とても使用に耐えられるものではありません。
これを解決する手段として、データは専用のデータベースに入れてVBAで操作する方法があります。
エクセルのマクロVBAから外部データベースを扱う方法について解説しています。

Googleスプレッドシート、Google Apps Script・・・学びながら掲載

筆者自身が、あまり使ってきませんでしたので、
勉強しつつ、覚えたこと、試したことを含めて記載していく予定です。
随所で、Excelとの対比を掲載しています。

フリーソフト、シェアウェア・・・Excelは購入によりVBAコードも開示

※現在は公開を停止しています。

フリーソフト、シェアウェア、ソフト一覧

使った感想などをお寄せくだされば、今後の開発に生かしていきます。
試用版の場合は、プロダクトキーの入力だけで有料版へ移行できます。
まずは一度、お試し下さい。

「お客様第一」顧客管理システムは有料ソフトです、試用版を用意してあります。
「エクセル顧客管理」は顧客管理です。購入でVBAコードも開示します。
「エクセル営業管理」は見積・請求・スケジュール・会計管理です。購入でVBAコードも開示。
「たぶん同期」フォルダ同期ソフトはフリーソフトです、ご自由にどうぞ。
「エクセル集」総務部、社会保険労務士向け、完全フリーです。




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ