エクセルの神髄
鵜原パソコンソフト研究所

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

本サイトについて

エクセル(Excel)関連の技術情報を充実させています。
「Excel全般」は、エクセルの操作と関数を基礎から応用まで、
「マクロVBA」は、入門・基礎から上級向けの情報まで豊富に揃えています。


開発したソフト(ExcelおよびVB.NET)の一部をフリー・シェアとして公開しています。
気軽にダウンロードして、使ってみて下さい。

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

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

PC版の上部メニューをドロップダウン形式にしました。
リンクテキストのマウスオン時は反転表示に変更。
マクロ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プログラミングの学習が目的です。
YouTubeで動画配信を開始しました。YouTube 動画一覧
手始めに、「ヤマサンゆったりマクロ」マクロの入門動画です。
チャンネル登録お願いします!
遅ればせながら、Google スプレッドシート の入門編を開始します。
ゆくゆくは、Google Apps Scriptの神髄にまで迫りたいと思います。
各ページの本文右上に、最終更新日を追加しました。
元ファイルの更新日ですので、公開日とは若干違う場合があります。
誤字脱字だけの修正をしている場合もあります。
久しぶりの新企画をスタート、ExcelマクロVBA再入門
理屈は最低限に、とにかくマクロVBAが書けるようになることが目的です。
スマホ対応サイトへリニューアルしました。
いわゆるレスポンシブCSSを使ったものとなっています。
これにともない、イメージも一新しました。
1年ほど前にフォルダ構成を変更し、2ヶ月前に旧ファイルを削除しました。
サイト内のリンクが消えても、Googleクロールエラーが無くなりません。
そこで、旧URLは301リダイレクトを設定しました。
各ページのレイアウトを少し変更しました。
行間を広くしたので読みやすくなったと思います。
※サイトのタイトルを「エクセルの神髄」としました。
「神髄」は本質、奥義の意味です。基本の積み重ねこそが奥義です。
サイト構成をエクセル中心に変更しました。
従来のトップページは、★旧トップページ★よりお入りください。
都合により、フォルダ構成を変更しました。
旧URLは、しばらく残しますが、いずれ削除予定です。
ブックマーク等をしている場合は変更をお願いいたします。
独自ドメイン取得しました。
エクセル色を強めました。
全体的にリニューアルしました。
使い易くなっていれば良いのですが。

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

CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)

CSVのマクロVBAでの読込方法についての記事は、人気記事として多くのアクセスがあります。当初作成して以来、ご要望をいただいたり自身で使っている中で、対応できないCSVが出てくるたびに改良を重ねています。今回のVBAは、一旦ジャグ配列を使用したCSV読み込み方法になります。
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
エセルの機能は豊富で、全部の機能を使っている人はまずいないでしょう、どのような機能があるかだけ知っていれば、必要な時に使えばそれで良いのです。マクロVBAでも全てのエクセル機能を覚える必要などありません、必要になった時に調べてVBAが書ければそれで充分です。
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)
シートにオートフィルタが適用されていてかつ絞り込みされている場合はVBAは何かと面倒になります。そこでこれに対応するために作成したものがオートフィルタを退避回復するVBAクラス ただしこれはシートが一つしか扱えません。複数シートで使う場合はシートごとにクラスのインスタンスを作成する必要があります。
オートフィルタを退避回復するVBAクラス|VBA技術解説(7月6日)
シートにオートフィルタが適用されていてかつ絞り込みされている場合はVBAでは何かと注意が必要になります。このような場合オートフィルタを解除するかフィルタ絞り込みをクリアして対応している事が多くなります。しかしオートフィルタを解除したりフィルタをクリアしてしまうとそれまでの絞り込み条件が消えてしまい
IfステートメントとIIF関数とMax関数の速度比較|VBA技術解説(6月23日)
VBAの実行速度比較はとても良く読まれている人気記事となっていますがそのほとんどは配列やDictionaryを使った少し高度なVBAでの比較が多くなっています。今回は極めて基本的な大小比較して大きい方を返すという処理においてIfステートメントVBA関数のIIF関数シート関数のMax関数 これらの処理速度を比較検証してみます。
Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
マクロVBAにおいてWithステートメントはとても重要です、可読性(読みやすさ、理解しやすさ)、実行速度においては、その役割はとても大きいものになります。本記事では、Withステートメントを使うか使わないかでのマクロ実行速度の差に焦点を絞って検証します。
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
VBAでSeleniumBasicを使って検索順位チェッカーを作りGoogle検索順位の履歴を管理します既に作成解説したVBA+SeleniumBasicで検索順位チェッカー作成こちらの改訂版になります。Google検索をスクレイピングすることはGoogle利用規約に反する可能性があります。
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
環境依存文字・機種依存文字をチェックしたいという話は時々聞くことなのですが何をもってして判別するかという事が実はとても難しい問題になります①②もIMEでは[環境依存]と表示されますが通常これが問題になる事はないでしょう。そもそもコンピューターの中は2進数だけで表現されているものでコンピューターの文字とは
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
本サイトの文字コードは開設当初からShift_JISでしたが昨今の事情を考えてUTF-8に変更することにしました。そこで既存記事全てを一括で変換することになりこれをVBAでやりましたのでその時のVBAコードを掲載しておきます。以下のVBAコードはサイトのUTF-8変更にあたり急遽作成したものですが
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
ツイッターで出たVBAのお題をやってみました。もとネタはこちら、VBAによる解析シリーズその2カッコ 関連ツイート なかなか楽しかったので、VBAコードを掲載しておきます。まず最初にお題から受ける印象は、再帰処理を行うという事になると思います。
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
VBAでSeleniumBasicを使って検索順位チェッカーを作ってみます。SEO対策として各キーワードでの検索順位チェックは欠かせませんが簡単に使えてキーワードを大量に指定できる良いツールがなかなかありません。Google検索をスクレイピングすることはGoogle利用規約に反する可能性があります。
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の具体的なVBAコードをパターン別に掲載しますテーブルの全体的な構成は ・テーブル全体 ・見出し行 ・データ範囲 ・集計列 ・集計行 VBAではこれらのオブジェクトを使い各要素にアクセスします。テーブル全体のオブジェクトがListObjectでシート内に複数テーブルが作成可能なので
テーブル操作の概要(ListObject)|VBA入門(5月12日)
テーブルのVBAでの操作で使用するオブジェクトの概要の説明です、テーブルは、セルの範囲を表(テーブル)に変換することで、関連するデータの管理と分析を容易にできるエクセルの機能で、以前はリストと呼ばれていました。テーブルを作成して書式設定することで、データを視覚的にグループ化して分析しやすくできます。
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)
VBAでWebスクレイピングする方法としてIE自動操作がありますがVBA記述が結構面倒になりますもっと簡単にスマートにVBAを書きたいと思ったら…SeleniumBasicを使ってみましょう。SeleniumBasicはエクセルVBAでのWeb閲覧を自動化することを強力かつ簡単に実現してくれます。
Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)
Excelワークシート関数の一覧と解説です。Excel2010以降に追加された関数一覧になります。2007までの関数一覧 ワークシート関数の一覧 引数関数構文については Excelシートの複雑な計算式を解析するVBAの関数構文 関数名 種類と説明 説明 追加Ver ERF.PRECISE エンジニアリング 誤差関数を返します。
クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAの使い方が進んでいくとクラスを使うようになっていきます。クラスを使うようになるとオブジェクト指向という言葉に出会いオブジェクト指向を学んでいくとポリモーフィズム(多態性)という言葉に出会います。オブジェクト指向における多態性の説明としてはメソッドの呼び出し時にメソッドが属するオブジェクト(クラス)の種類によって呼び出し先の実装コードが選択され
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
VBAでタイマー処理(一定時間間隔で処理)を行う方法についての解説です。最も一般的な方法はApplication.OnTimeを使う方法になりますが今回の主題としてはWindowsAPIのSetTimerを紹介します。まずはApplication.OnTimeの確認してから次にWindowsAPIのSetTimerを紹介します。
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルVBAではマルチスレッドによる並列処理はサポートされていません、つまり通常は順序良く直列に処理していくしかありません。しかし処理時間が多大にかかるような処理も現実には存在しているため、エクセルVBAで並列処理したいという要望も出てきます。
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
エクセルに入力するデータとしては、数値、文字、日付時刻などがありますが、日付時刻はかなり特殊なものとなっています。日付時刻の扱いは独特であり、エクセルのワークシートだけでなくVBAでも他のプログラミング言語でも扱いが面倒なものです、ここでは日付時刻についての関数や応用方法についてまとめています。
Excelシートの複雑な計算式を解析するVBAの関数構文|VBAサンプル集(2月18日)
複雑な計算式を解析するVBAで使う「関数構文」シートのサンプルです。ほぼ全ての関数を網羅しています、中には漏れもあるかもしれませんが、解析VBAで使うに十分な関数が入っています。引数のない関数は意味がないのですが、一覧にあるものはそのまま入れています。

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

1.最終行の取得(End,Rows.Count)|VBA入門

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

エクセル(Excel)・・・エクセルの基本操作・関数からマクロVBAまで

特にマクロVBAのコンテンツは初級者から上級者まで役に立つ内容にしています。
★エクセルの基礎を学習する方法★


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

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


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

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

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

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

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


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

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




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


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



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