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

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

本サイトについて

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

「Excel全般」は、エクセルの操作と関数を基礎から応用まで。
「マクロVBA入門編」は、入門・基礎として、VBA未経験者でも理解できるように詳しく説明しています。
「マクロVBA応用編」は、VBA経験者(中級・上級)向けの技術解説およびVBAサンプルを豊富に揃えています。
「SQL入門」は、エクセルのマクロVBAから外部データベースを扱う方法について解説します。
「スプレッドシート入門」は、随所でExcelとの対比を掲載しながら説明しています。
「Google Apps Script入門」は、VBAでエクセルを扱うようにGASでスプレッドシートを扱う事に絞って解説しています。

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

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

ロリポップサーバーをハイスピードプランに変更しました。
ページの表示速度は以前より早くなっています。
新シリーズ「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・・・新着記事一覧をもっと見る

Variantの数値型と文字列型の比較|エクセル雑感(7月1日)
ツイッターで出したVBAのお題です。Variant型は、どんなデータ型も入れることができます。具体的なデータ型の代わりに使用することで、より柔軟にVBA記述ができるようになります。ただしその一方で、少々特殊な挙動もあり、使いこなすにはそれなりの知識が必要になる場合もあります。
VBAのVariant型について|VBA技術解説(6月30日)
Variantデータ型は、他の何らかのデータ型として明示的に宣言されていない変数で、全てのデータ型を入れることができます。Variantデータ型には型宣言文字はありません。Variant型は、特別な値Empty、Error、Nothing、Nullを格納することもできます。
VBAのString型の最大文字数について|エクセル雑感(6月20日)
ツイッターで出したVBAのお題です。String型はVBAリファレンスでは、「可変長文字列は、最大で約20億(2^31)文字を格納できます。」と書かれています。これについて、本当は何文字まではいるのかについての問題です。
VBAで表やグラフをPowerPointへ貼り付ける|VBAサンプル集(6月19日)
エクセルのグラフや表範囲をパワーポイントへ貼り付ける方法の解説です。1つ2つの貼り付けを単発で行うのであれば手作業でも良いですが、何十個も、そして、何回も貼り付けを行うのであればVBAで自動化したいところです。エクセル パワーポイント 表やグラフをPowerPointへ貼り付けるVBA PowerPointを使う準備と保存終了 DimppAppAsNew…
アクティブシート以外の表示(Window)に関する設定|VBA技術解説(6月17日)
VBAの中でも非常に分かりづらいオブジェクトにWindowオブジェクトがあります。Windowオブジェクトは、ブックやシートの見方を変えることのできるものです。Windowオブジェクトの集まりが、Windowsコレクションであり、Windowオブジェクトは、Windowsコレクションのメンバーです。
マクロ記録での色のマイナス数値について|エクセル雑感(6月16日)
ツイッターで出したVBAのお題です。マクロの記録で文字色などの色を指定するとマイナス数値で記録される場合がありますが、このマイナス数値は何かを問う問題です。お題のツイート https://twitter.com/yamaoka_ss/status/1272119270026051587 【エクセル問題】 マクロの記録で文字色を指定するとマイナス数値で記録…
ツイッター投稿用に文字数と特定文字で区切る|エクセル雑感(6月15日)
ツイッターで出したVBAのお題です。ツイッター投稿には文字数制限がありますので、セルに入れた下書き文章をツイート用に区切る問題です。お題のツイート https://twitter.com/yamaoka_ss/status/1272033174575407105 【エクセルお題】 ツイートの下書きをA1セルに入れています。
日付の謎:IsDateとCDate|エクセル雑感(6月14日)
ツイッターで出したVBAのお題です。エクセルにおける日付のちょっと不思議な挙動についての、ちょっと変わった、ちょっと意地悪な問題です。お題のツイート https://twitter.com/yamaoka_ss/status/1271776939343110146 【VBA問題】 画像のVBAはエラーになる事があるでしょうか? 回答用の投票 ・IsDat…
IFステートメントの判定|エクセル雑感(6月13日)
ツイッターでIfステートメントの書き方が話題になっていたのを見て、結構いろいろな要素があるということで、ちょっと意地悪な問題にしてみました。お題のツイート https://twitter.com/yamaoka_ss/status/1271402726174277632 VBA問題 さて、いくつが表示されるでしょうか? Dimi If"true…
インクリメンタルサーチの実装|ユーザーフォーム入門(6月12日)
VBAのユーザーフォームで大量のリストから選択する場合、リストが大量にあると単なるコンボボックスやリストでは探すのが大変になってしまいます。そこで、インクリメンタルサーチを実装してみます。インクリメンタルサーチとは、検索したい単語をすべて入力してから検索するのではなく、文字を入力するたびに即座に候補を表示させる機能です。
印刷範囲の設定・印刷範囲のクリア|VBA技術解説(6月8日)
印刷に不必要なデータが含まれているワークシートの場合、適切なセル範囲を印刷範囲として設定します。印刷範囲を設定するには、WorkSheetオブジェクトのPageSetupオブジェクトのPrintAreaプロパティを使用します。VBAでの印刷およびPageSetupオブジェクトの詳細については以下を参照してください。
【超難問】エクセル数式問題|エクセル雑感(6月6日)
ツイッターで出題した問題です。これは、ほぼネタツイです。純粋にエクセル問題だと考えると意味が解らない問題ですので、ご注意ください。お題のツイート https://twitter.com/yamaoka_ss/status/1268909723375419393 【超難問】エクセル数式問題 =ROUNDUP((20+10)*2^2*2^4*4,
ジャンプ・セル選択の応用(空欄を埋める、1行置きに挿入)|エクセル関数超技(6月5日)
ジャンプ機能は、指定のセルにジャンプする機能です。このジャンプ先の指定方法が豊富に用意されていて、その応用範囲はとても広いです。以下の2通り、・表の同上で空欄になっているセルを埋める ・表に1行おきにきに空白行を挿入する 動画と簡単な解説で紹介します。
XLOOKUP関数とスピル入門|エクセル入門(6月2日)
2019年Office365に追加された革新的な機能としてスピルがあります。また、少し難しく時々間違った指定をしてしまいがちだったVLOOKUP関数が、より強力で簡単で便利な新関数としてXLOOKUP関数が登場しました。スピルの概要とXLOOKUP関数の基本について説明します。
COUNTIF関数の結果は?|エクセル雑感(5月30日)
ツイッターで出題した問題です。COUNTIF関数で、数値と文字列が混在した範囲を大小比較で取得するという、かなり無茶な問題です。お題のツイート https://twitter.com/yamaoka_ss/status/1265952309353213953 【COUNTIF問題】 見た通り、6行目からは文字列として入っています。
エクセル&VBA オンライン講座|エクセル セミナー(5月29日)
累計36万部!「たった一日で即戦力になるExcelの教科書」「たった1秒で仕事が片づくExcel自動化の教科書」Excelセミナー動画サービス 1講座わずか330円/月で視聴可能!「Excel100の極意マスター講座&VBA初級編セット」2つの講座をセット価格で550円/月で視聴可能に!過去10年間で300回開催、
アルファベットの26進(ツイッターお題)|エクセル雑感(5月19日)
ツイッターで出されたお題をVBAで回答したものです。AAAの値をAAB,AAC...AAZまでインクリメントし、次のアルファベットを桁上げし、ABA,ABC?ZZZまで計算するコードを書きたい。お題のツイート https://twitter.com/KotorinChunChun/status/1262026213352026112 よくある方法 一番多…
基本操作.条件付き書式|エクセル入門(5月11日)
条件付き書式は、指定した条件に基づいてセルの書式(セルの外観)を変更できます。通常の「セルの書式設定」では、書式を設定するセル自身の数値によって変更することは可能ですが、条件付き書式では、他のセル値も含めて複雑な条件によって書式を変更できます。
基本操作.ジャンプのセル選択|エクセル入門(5月10日)
ジャンプ機能は、指定のセルにジャンプする機能です。このジャンプ先の指定方法が豊富に用意されています。ジャンプ ショートカットキーは、Ctrl+G F5 「参照先」には、セル番地…A1 セル範囲…A1:B5 シート指定のセル番地…Sheet2!A1 テーブル名…テーブル1 等々が指定できます。
基本操作.フィルター|エクセル入門(5月10日)
以前はオートフィルターと呼ばれていましたが、現在は単にフィルターと記載されています。フィルターは、条件に合致したデータだけを表示し、条件に合致しないデータは非表示にする機能です。つまり、データを絞り込んで表示するものです。

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

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

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

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

★エクセルの基礎を学習する方法★

エクセル全般の全コンテンツ一覧

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

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

★ExcelマクロVBAの基礎を学習する方法★

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

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

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

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

随所で、Excelとの対比を掲載しています。
VBAでエクセルを扱うようにGASでスプレッドシートを扱う事に絞って解説しています。

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

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

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

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

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




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


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


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