analytic-vba のすべての投稿

エクセルで作るタイマー

エクセルでも、簡単な技術を組み合わせただけでここまで出来るといる!!

これを「エクセルで作るタイマー」で証明したいと思います

以前に書いた記事、スピードメーターグラフで円を傾ける技術について解説したことがあります

1_4.gif

上のGIFの通り、「系列のオプション」画面で「グラフの基線位置」を変えると円グラフが傾きます

この仕組みを活用して、1分タイマー作成します

時計

以下、「タイマーのオブジェクト作成」「ループ処理の作成」の2段階で作成方法を解説します

1.まずはタイマーオブジェクトを作成します

まず外円、棒(秒針)を作成します

秒針は円と棒を組み合わせて作成します

画像に alt 属性が指定されていません。ファイル名: 秒針.jpg

その後、作成した円と秒針をグループ化してオブジェクトを作成します

グループ化して置かないと、秒針と外円がうまく連動して動かなくなるので注意が必要です

19

オブジェクトを作成したら、オブジェクトに名前(時計)をつけておいて、後でVBAでコードを書きやすくしておきましょう!

以下がオブジェクト名を付ける画面です

20

上記の画面は「HOME」タブの右側「検索と選択」から開けます!

この「選択の画面」の詳細な使い方については、以下の動画を参照してください。

2.ループ処理のマクロを書く

待ち処理を組み合わせて、秒針を動かすためのループ処理をコードで書きます

①待ち処理⇒常に「今」から1秒待ち処理

以下が、待ち処理のコードです

Application.Wait Now + TimeValue(“00:00:01”)

②ループ処理のカウント(変数→i)をそのまま秒針の角度にします

1.で作成したタイマーオブジェクトの角度を変えていきます

Worksheets(“時計”).Shapes(“時計”).Rotation = i

③最後は時計オブジェクトを0に戻して終了です

Worksheets(“時計”).Shapes(“時計”).Rotation = 0

ぜひ、以下のサンプルファイルもダウンロードして直接参照してみてください

このタイマー実は正確には1分で終了しません。うまく調整する方法もあると思いますが、今回は割愛しています

グラフを傾けながら作成するスピードメーターグラフの作成の仕方については、こちらで記事を書いています ⇒ スピードメーターグラフ

画像に alt 属性が指定されていません。ファイル名: スピードメーター2.gif

また、エクセルのアドイン機能でもタイマーがあります!

カラフルでとても使いやすいです!

興味のある方はぜひタイマーアドインをダウンロードしてみてください

画像に alt 属性が指定されていません。ファイル名: Timer-Excel.gif

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村
にほんブログ村 IT技術ブログ VBAへ

関数をマスターする6~MATCH関数&INDEX関数2~

今回は前回に引き続き、MATCH関数とINDEX関数に取り組みます

今回は、名前管理の機能を使ってより実践的な活用方法に取り組んでみましょう!

もし、分かりづらい部分があれば下記のサンプルファイルをダウンロードして自分で触って動かしてみましょう!

関数を理解するための一番の近道は”手を動かす”ことです

ところで、

読者の中には「MATCH関数とINDEX関数の組み合わせはVLOOKUP関数と似ている」と感じた方もいらっしゃると思います

MATCH関数とINDEX関数の組み合わせがどう”VLOOKUP関数”と違うかという点も合わせて解説していきます(VLOOKUP関数は行方向に検索しますが、列方向には検索できませんので、その点は省略させて頂きます)

では、

 下の画像にある表から、選手の名前に応じて学年から出場回数を抽出する関数を作成していきましょう!!

18

INDEX関数とMATCH関数は下の画像の黄色の印を付けた箇所に入力をします

1.まずは表の見出しに対応した名前をつけよう!

選手~出場回数までの各列に、エクセル画面上の名前ボックスにて、そのまま見出し/列名を名前につけましょう!

GIF9

各列に名前を付ける理由について、1つ解説します

もし、名前を付けない場合は、選手の学年を抽出する関数はどんな風になるかというと以下のようになります

=INDEX(C$2:C$11,MATCH(C$13,B$2:B$11,0))

一方、名前をつけると下記のようにセル範囲の部分が置き換わります

=INDEX(学年,MATCH($C$13,選手,0))

名前を付けたほうが一目見ただけで意味が分かりますよね

”Cの列は何だっけ?”などと表を参照する必要はありません

では、以下の画像の表の空欄”=INDEX(学年,MATCH($C$13,選手,0))”と記入して、赤字の選手名に対応して「選手の学年」を関数で抽出できるようにしましょう

20

2.関数を下まで(出場回数まで)コピーして、関数の名前を修正

関数をコピーした後、関数の名前を抽出対象にあわせて修正しましょう

21
22

もし、1.の段階で名前を付けていなかったら、セルの列や行位置などを修正する必要があった(もしくは1.の段階で絶対参照を設定しておく必要があった)ことを考えると、名前を付けることが省力化につながることが良く分かると思います

3.表に列や行を追加してみましょう!

VLOOKUP関数でも同じように名前をつけて表から抽出することができます

23

ここで、表に行データ/5行目を追加してみましょう!

24

VLOOKUP関数でも行追加に対応できています

今度は列を追加してみましょう!

25

するとVLOOKUP関数の列参照が狂ってしまいます・・・

なぜなら、VLOOKUP関数の列参照は整数で設定しているからです

対して、INDEX関数とMATCH関数は、あくまで参照する値に応じて検索が行えます

この点はMATCH関数とINDEX関数の組み合わせとVLOOKUP関数の大きな違いです

この”違い”を理解した上で、場面に応じてMATCH関数とINDEX関数の組み合わせてとVLOOKUP関数を使い分けていきましょう!

次回OFFSET関数について解説します


にほんブログ村

関数をマスターする7~OFFSET関数~

今回、次回OFFSET関数に取り組みます

OFFSET関数はある指定範囲を起点とし、指定した行数もしくは列数を移動して参照する関数です

この関数は単体だと地味な機能しかありませんが、他の関数と組み合わせると高度な事ができるようになります

次回ではOFFSET関数とSUM関数、そしてMATCH関数と組み合わせて以下のようなダッシュボードを作るところまで解説します

このダッシュボードでは、ラウンドの指定に応じて採点表から指定のラウンドまでの採点・合計を表示しています

今回はOFFSET関数の単体での機能を確認しておきましょう!

引数

関数を作成するのに必要な引数は次の3つ/引数1~3です

=OFFSET(引数1:参照,引数2:行数,引数3:列数)

演習

まずはサンプルファイルの演習シートにて、OFFSET関数で左の表から木村選手の学年を求めてみましょう       

 *但し、参照はA1セルにします

まず引数1:参照を設定しましょう

上の画像ではみずらいですが、絶対参照でA1セルを参照するようにしました

次に引数2の行数を設定しましょう

木村選手の行はA1セルの1つ下なので1を入力します

最後は引数3を設定して完成です

学年の列はA1セルから2列目ですので、2列目を設定します

次は仕上げとして、鈴木選手の出場回数もOFFSET関数で求めましょう!

参照値は上と同様にA1セルです

行数は3、列数は4にします!

<まとめ>

今回はOFFSET関数・単体の使い方について解説しました

この関数では、まずは起点を作成するところがポイントです

OFFSET関数では、なかなか使い道が見えてこないと思います

ところが、

 この関数は記事の冒頭で述べたように、他の関数と組み合わせると絶大な効果を発揮します

では次回は他の関数との組み合わせ方法について解説します

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

関数をマスターする8~OFFSET関数~

今回はOFFSET関数を他の関数や機能と組み合わせ、ダッシュボードの中で実践的に使ってみましょう

 赤コーナーと青コーナーの採点合計をラウンド毎に可変で算出するのですが、OFFSET関数をうまく活かしてSUM関数の合計範囲を可変にします

サンプルファイルでは”OFFSET関数サンプル”のシート名になります

まずは何故、可変で算出できるのか、仕組みの概要を解説します

概要

1.MATCH関数を使用して表から該当ラウンドの位置を算出する

 例えばボードに示されたラウンドが4Rならば4を算出するようにします

MATCH関数を使用して、上の画像の画像の「1R~10R」が入力された範囲を参照して4Rの位置を抽出します

2.OFFSET関数で1.で算出した値に応じて合計範囲を算出する

 実は前回はOFFSET関数の引数を3つまでしか解説しませんでしたが、実はもう2つあります

4つ目の引数は「範囲の高さ」、5つ目の引数は「範囲の幅」になります

この2つの引数を使って可変で範囲を設定します

3.2.の関数に名前をつけてSUM関数の中に組み込む

名前機能を利用することで複雑な関数の組み合わせ式をシンプルに示すことができます

以上の3つを踏まえて実際に作業をしていきましょう!

演習

➀MATCH関数で位置を算出する

 検索値はボードがあるF2セル、検索範囲は採点表でラウンドが記載されているM2からV2までの範囲になります(採点は前ラウンドまでなので-1で調整します)

 =MATCH($F$2,$M$2:$V$2,0)

②OFFSET関数で合計範囲を算出す

前回、解説したOFFSET関数の引数は3つでした  

=OFFSET(引数1:参照,引数2:行数,引数3:列数)

実は前述のようにもう2つ追加できます

 
  =OFFSET(引数1:参照,引数2:行数,引数3:列数, _

    引数4:高さ、引数5:幅)

今回の場合は高さをに固定した上で、幅をで算出したMATCH関数の値により可変にします

これまでの内容を組み込んだ数式は以下になります(赤コーナー分)

=OFFSET(a:OFFSET関数サンプル!$M$4,b:0,c:0,d:1, e:MATCH(OFFSET関数サンプル!$F$2,OFFSET関数サンプル!$M$2:$V$2,0)-1)

a:参照・起点/赤コーナーなのでM4セル

b:行数

c:列数

d:高さ

e:合計範囲の幅⇒MATCH関数でボードのラウンドより算出(4Rがボードに示されていれば3になります)

③②の関数に名前をつけた上でSUM関数に組み込む

では数式タブから名前管理をクリックして②の数式に名前をつけましょう!

数式は下の画像の参照範囲のところにコピーしてしまいましょう!

(下の例では赤コーナー、青コーナーと名前をつけています)

名前をつけたら下の画像のようにSUM関数に組み込みましょう!

  

これで完成です

<まとめ>

今回は、OFFSET関数と他の関数を組み合わせて合計範囲を可変にして計算する方法を解説しました

 ポイントは2つあり、まず1つ目はOFFSET関数の4つ目と5つ目の引数をうまくMATCH関数と組み合わせることです

OFFSET関数の4つ目の引数は高さですので、今回のように合計範囲が行方向の場合には1で固定して考えて構いません

5つ目の引数は幅ですので、こちらはMATCH関数と組み合わせて可変にします

2つめはOFFSET関数を名前で設定してSUM関数に組み込む点です

このように複雑な関数を名前で組み込むことで、数式の可読性を向上させることができます

 範囲を可変にする技術はダッシュボードではよく使うので、実際に手を動かしてみてしっかり身につけておきましょう!

ではまた次回

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

 

 

意外なエクセル術 ~グラデーショングラフ~

過去にも数字を魅せるグラフ術の中で紹介していますが、

好評なので、要約版として記事を書きます

Gif1

とてもインパクトがあって数字の持つ意味がそのまま伝わってきそうです

作り方自体は実はそれほど難しくはありません

2つのグラフを重ねることで”透明な部分”と”透明でない部分”を生み出します

エクセルには標準機能で、グラフを重ねる機能があります

下の図の「追加」を押すと、グラフの元データを追加することができます

上の図の画面は、グラフの上で右クリックし「データの選択」をクリックすると表示することができます

組み合わせる2つのグラフは、以下の画像のような感じになります

5

ちなみに左のグラフはドーナツグラフです。20個均等になるようにグラフのパイを作成します

右側のグラフは、下の図のように図形のぬりつぶしを使います

18

いかがでしょうか?作成の仕方のイメージはできたでしょうか?

もし、分からないことがあればぜひ、こちらの記事を参照してみてください!

では!また次回

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

グラフデータが空白の時

題名が分かりにくかったと思いますが、”空白”な時とは以下のような時です
13

せっかくグラフを作ってもこれはではあまりグラフとしての意味がありません

こんな時に修復する機能が実はエクセルにはあるのです

1.修復したいグラフ上で”データの選択”をクリック

実は下の方に”非表示および空白のセル”というのが見えてきます

こちらをクリックして下さい

14

2.修復方法を選択

ゼロとして表示する、前後からの推測で線を”結ぶ”の2つが修復方法として選択できます

・ゼロとして表示する16

・前後からの推測で線を”結ぶ”

17

以上です

また次回をお楽しみに!
にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村
にほんブログ村 IT技術ブログ VBAへ

関数をマスターする9~文字列操作関数・一式~

今回は文字列操作関連の関数を一式で解説します

この文字列操作関連の関数は一つ一つ覚えるより、組み合わせ方を覚えていくととても実践的な活用の仕方が可能になります

中でもMID関数FIND関数LEN関数の組み合わせは鉄板です

とにかく、”習うより慣れろ”を意識して取り組んでいきましょう!

1.氏名から空白を介して名前を抽出

サンプルファイルに演習シートがあります。このシートで「A列の氏名」から「名前/姓」を関数の組み合わせにて自動抽出します

➀LEFT関数、RIGHT関数

本題に入る前にLEFT関数とRIGHT関数でウォーミングアップをしましょう

対象の文字列の左、もしくは右側から指定した文字数を抽出します

=LEFT(対象文字列,文字数)、=RIGHT(対象文字列,抽出文字数)

上のGIF画像では、B2セルに「=LEFT(A2,1)」が入力されており、氏名の「田中 敦」の左から1文字目の「田」を抽出しています

C2セルには「=RIGHT(A2,1)」が入力されており、氏名の「田中 敦」の右から1文字目の「敦」を抽出しています

②MID関数

ここからが本題です

対象の文字列の途中から文字を抽出します

=MID(対象文字列,抽出開始位置,文字数)

ちなみに木村と浩の間には空白が入っています

上のGIF画像では、D2セルに「=MID(A2,2,2)」が入力されており、氏名の「田中 敦」の左から2文字目を起点として長さ2文字「中 」を抽出しています

D4セルは「=MID(A4,2,2)」が入力されており、氏名の「奈良原 功」の左から2文字目を起点として長さ2文字「良原 」を抽出しています

③FIND関数

FIND関数は、文字列の中から指定した文字の位置を見つけます。

=FIND(検索文字列,検索対象文字)

上のGIF画像のE2セルには「=FIND(“ ”,A2)」が入力されており、A2セルの「田中 敦」から空白の位置を見つけています

④LEN関数

このLEN関数は文字の長さを返してくれます

=LEN(対象文字列)

⑤MID&FIND&LEN関数

②~④を組み合わせて空白を介して氏名から名前/姓を抽出します

STEP1:FIND関数で空白(全角)の位置を見つける

STEP2:(LEN関数-FIND関数)で名前/姓の長さを抽出する

STEP3:STEP1、STEP2の値を使ってMID関数を作成する

2.桁区切りや小数点表示を指定する

桁区切りや小数点の表示桁数は、TEXT関数を使って自由自在に指定できます

=TEXT(対象文字列,書式)

桁区切り

桁区切りは、TEXT関数の2番目の引数を次のように”#,000″と指定します

=TEXT(A8,”#,000″)

小数点の表示桁数

小数点の表示桁数は、第2位まで表示させる場合はTEXT関数の2番目の引数を次のように”=TEXT(A9,”#.00″)”と指定します

=TEXT(A9,”#.00″)

以上です。いかがでしたか?関数の便利さを実感できたのでないでしょうか?

ではまた次回お会いしましょう!

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

関数をマスターする10~順位付け関数~

今回は数字の順位付けを行う関数を解説します

これらの関数は意外な使い道があり、例えば以下の様なグラフでも活用しています(実は2つのグラフを組み合わせています:詳細

1.最大値(MAX関数関数)と最小値(MIN関数)を抽出する

MAX関数は参照範囲から最大値を抽出します

=MAX(参照範囲)

MAX関数

MIN関数は参照範囲から最小値を抽出します

=MIN(参照範囲)

MIN関数

2.上の順位(LARGE関数)、下の順位(SMALL関数)で抽出する

LARGE関数は参照範囲から、指定した順位の値を抽出します

=LARGE(参照範囲,順位)

下の画像では、LARGE関数の参照範囲としてC列の点数が記入された範囲を指定し、順位としてはE7セルに記入されている「2位」からLEFT関数にて「2」を抽出して指定しています

LARGE関数

SMALL関数は参照範囲から、指定した順位の値を抽出します

=SMALL(参照範囲,順位)

SMALL関数

<まとめ>

今回は、最大値などの順位付けを行う関数を解説しました

今回解説した関数は単独ではあまり使用機会が少ないですが、他の関数との組み合わせにより有効活用できますので知っておくとても便利です

次回は関数の検証機能について解説します

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

関数をマスターする11~エクセル数式検証・機能

エクセルダッシュボードでは関数の中に関数を組み込む(ネスト)機会がとても多くなります

つまり、関数の結果を直接的には検証できないことになります

下の画像のようにINDEX関数の中にMATCH関数を使用しているケースなどは典型です

こんな時に”東京”という出力結果が想定した結果でなかった場合には

INDEX関数が悪かったのか?

MATCH関数が悪かったのか?

が分かりません

そんな時に、MATCH関数を書き直すところから検証を行っていたら非効率です

キャプチャ2

そんな時には数式タブにある”数式の検証”機能を使いましょう

この機能では、段階的に数式の内容を表示してくれます

下の画像は検証画面を開いた状態です

ここから黄色の印をつけた「検証」を押してみます

すると、MATCH関数の中味の一部が表示されます

更に、「検証」を押してみます

今度は、完全にMATCH関数の中味が表示されます

そして、もう一度「検証」を押すと完全に数式の中味が表示されます

このように、数式の検証・機能を活用すると段階的に数式の内容を表示してくれるので、数式の検証が行いやすくなります

関数を組み合わせている場合などは、とても便利なのでぜひ活用してください

詳細は動画にて確認できます

https://youtu.be/9dApAmcc2Hk

次回は特殊フォントついて解説します

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

イラストのようなフォントを使いこなす

今回は無味乾燥な表にメリハリとパンチを付け加える小技を解説します

下のGIF画像のGoodマークBadマーク、実はイラストでなくてフォント、つまり文字なんです

フォント

こちらは特殊なフォンをエクセルダッシュボードに組み込んでいるのですが、これは下の画像の表から抽出する仕組みになっています

キャプチャ1

数式バーにDDと入っていて、おや?と思われる方もいらっしゃると思いますが

これWingdingsっていう、れっきとしたフォントなんです

どこから引っ張るかというと、”挿入タブ”から記号と特殊文字を選んでください

次の画面が出たら”フォント”のところから選べます

キャプチャ2

どれもとてもキャッチ―なので、無味乾燥な表にメリハリを付けるのにとても便利です

ちなみに下のお天気マークは”Webdings”っていうフォントから引っ張りました!

キャプチャ3

ちなみにWingdingsには2と3もあります

イラストのようなフォント!、一味違う資料作りをするのに、ぜひ活用してください!

次回はタイムラインについて解説します


にほんブログ村