旧タイトル:【2-25】TAKE関数の使い方
YouTubeで開く
ダッシュボードを作成する時などに役立つ『TAKE関数』について解説しています。
00:00 挨拶
01:00 基本的な使い方
03:01 活用例
11:11 プレゼントについて
IT予備
業務効率化のコツが無料で学べる!Excelなどの解説&配布サイト

旧タイトル:【2-25】TAKE関数の使い方
ダッシュボードを作成する時などに役立つ『TAKE関数』について解説しています。
00:00 挨拶
01:00 基本的な使い方
03:01 活用例
11:11 プレゼントについて

一部を修正して上書き保存した後に、「やらかした!」と気づいた経験はないですか?
ローカル上に保存しているファイルの場合、上書き保存する前のデータに戻すことは困難になります。
そこで今回は、保存時にバックアップファイルを自動で作成する仕組みの実現方法について解説していきます。

※こちらで実現したファイルは記事の最後にて配布しています。
今回は、対象のファイルを上書き保存すると同時に、予め指定したフォルダ内にバックアップファイルを作成するという仕組みを実現します。
対象のファイルを保存すると同時に何かしらの処理を実行するには、「ブックモジュール」を活用します。
ブックモジュールは、[開発]タブから[Visual Basic]を選択し、表示された画面(VBE)のプロジェクトエクスプローラーから[ThisWorkbook]を選択することで表示することができます。

[開発]タブが表示されていない場合は、「Alt + F11」でもVBEの画面を開くことができます。
また、プロジェクトエクスプローラーが表示されていない場合は、「Ctrl + R」で表示することができます。
次に、ファイルを保存したときに、保存される前に処理が実行される特殊なプロシージャ(イベントプロシージャ)を用意する必要があります。
そのためには、ブックモジュールの左上のリストから[Workbook]を選択します。

[Workbook]を選択すると、自動で「Workbook_Open」というプロシージャが表示されます。
このプロシージャは、Excelファイルの立ち上げ時に自動で実行されるイベントプロシージャになります。

ただ、今回使用するイベントプロシージャは、ファイルを保存したときに、保存される前に処理が実行されるものになります。
そのため、右上のリストから[BeforeSave]を選択します。

表示された「Workbook_BeforeSave」というプロシージャを活用します。
「Workbook_Open」というプロシージャに関しては削除して問題ないです。

以下のコードを記述します。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim fP As String
fP = Me.Path & "\_bk"
Dim fN As String
fN = Format(Now, "yyyymmdd_hhnn") & ".xlsm"
Me.SaveCopyAs fP & "\" & fN
End Sub
では、コードについて解説していきます。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'省略
End Sub
「Workbook_BeforeSave」というプロシージャは、対象のファイルを保存したときに、保存される前に実行されます。
処理が完了すると同時に、対象のファイルは保存されます。
今回は使用しませんが、引数の「Cancel」を処理内でTrue(Cancel = True)にすると、処理が完了した後に保存されなくなります。
Dim fP As String
fP = Me.Path & "\_bk"
変数「fP」にバックアップファイルを保存する先のフォルダのパスを格納しています。
こちらでは、対象のExcelファイルが保存されているフォルダ内の「_bk」というフォルダのパスを指定しています。

「Me.Path」で自分自身(コードを記述しているファイル)が格納されているフォルダのパスを取得し、「&」で「_bk」フォルダのパスを加えています。
Dim fN As String
fN = Format(Now, "yyyymmdd_hhnn") & ".xlsm"
変数「fN」にバックアップファイルを保存する際のファイル名を格納しています。
ファイル名は、「現在の日付_現在の時刻.xlsm」となるように指定しています。
Me.SaveCopyAs fP & "\" & fN
自分自身(コードを記述しているファイル) のコピーを保存しています。
保存先やファイル名は、変数「fP」と「fN」を活用して指定しています。
以上の内容で実現できます。
開発したファイル(以下の画像では「お問い合わせ管理.xlsm」)を開いて上書き保存すると同時に、同じ配下の「_bk」フォルダ内にバックアップファイルが作成されます。

ファイルは1分単位の名前で保存されるので、1分以内に繰り返し保存した場合は、バックアップファイルの同じ名前のファイルが上書きされます。
▼サンプルファイル▼

Excelの基本である「ファイルの開き方」、「保存方法」、「要素の名前」について解説しています。
また、意外と知られていない小技も解説しています。
00:00 挨拶
01:13 開き方
03:11 保存方法
05:16 要素の名前
08:03 まとめ
08:20 プレゼントについて
IT予備メンバーに加入して連携すると、メンバー限定動画に切り替わります。
※サイト内の限定動画です。
Excelの基本である「ファイルの開き方」、「保存方法」、「要素の名前」について解説しています。
また、意外と知られていない小技も解説しています。
00:00 挨拶
00:46 開き方
02:43 保存方法
04:48 要素の名前
07:35 まとめ

Excelファイルを他の人に共有する際に、毎回、以下のような警告が表示されて困った経験はないですか?

これは、数式で外部のデータ(そのファイル以外の値)を参照しているときに発生する現象になります。
今回は、ファイルを外部に共有する際(メールで送る際など)に、上記のような警告が表示されないようにする対策方法について紹介していきます。
警告が表示されないようにする最も効果的なのは、「共有用のファイルから数式を全て取り除き、値のみに変換する」という方法です。
共有前のファイルにて、以下の手順を行うことで、ほとんどの場合で警告が表示されなくなります。
① 全シートを選択
対象ファイルの先頭のシートを選択してから、Shiftキーを押しながら末尾のシートを選択

② シートの左上の角を選択し、シート全体を選択

③ 全体を選択している状態でコピーし、値のみを貼り付ける
・Ctrl + C:コピー
・Ctrl + Shift + V:値のみ貼り付け
※使えない場合は右クリックメニューから値のみを貼り付ける

④ セルA1を選択して、セルの複数選択を解除する

⑤ いずれかのシートを選択して、シートの複数選択を解除する

以上の手順で、ファイル内の数式を全て取り除くことができます。
数式による自動計算の仕組みが無効になるため、データのみを共有する際に有効です。
こちらの手順を行う際は、原本ファイルを上書き保存しないように注意してください。

Googleスプレッドシートの表と連携した「読書管理アプリ」の作成方法について解説しています。
誰でも簡単に、ノーコードで作成できる内容です。
00:00 挨拶
00:51 AppSheetとは
01:26 Googleスプレッドシートで表の作成
03:16 アプリ作成
04:36 アプリのカスタマイズ
10:55 まとめ
11:16 プレゼントについて

更新前と更新後のデータを比較し、追加されたデータ、削除されたデータ、更新されたデータを瞬時に表示する機能です。
更新前と更新後のデータは別々のシートで管理しています。
更新後のシート全体をコピーし、更新前のシートに貼り付けることで、繰り返し活用することができます。
00:00 挨拶
00:50 完成イメージ
02:11 準備
02:50 作成(追加データの商品IDを抽出)
14:20 作成(削除データの商品IDを抽出)
16:34 作成(更新商品の情報を抽出)
21:02 作成(実行ボタン)
21:34 完成
22:58 プログラムの全体
26:55 プレゼントについて
▼準備ファイル▼

数式を使うことで、請求書の作成をある程度自動化することができます。
今回は、請求日と顧客名を入力するだけで、自動で請求書が作成される仕組みを紹介していきます。
今回は、以下の請求書を目標にした手順を解説していきます。
【条件】
・請求日には1日の日付を入力する
・入力した顧客名の住所を「顧客情報」シートから数式で抽出
・請求日に入力した日付を基準に、先月の対象顧客の請求データを「請求一覧」シートから数式で抽出
・他の項目(各金額、小計、消費税、合計金額)にはあらかじめ数式を入力

※こちらで実現したファイルは、記事の最後にて配布しています。
今回は、以下の3つのシートを含むファイルを活用して実現していきます。
・「請求書」シート
黄色のセルにはあらかじめ数式を入力しています。
これらの数式についての解説は、こちらでは省略します。
※配布ファイルには入力済みです。

・「請求一覧」シート
「日付、顧客名、摘要、数量、単価」の項目で成り立つ表を用意しています。
こちらの表の「日付」と「顧客名」を基準に、請求データを抽出する数式を作成していきます。

・「顧客情報」シート
「顧客名、住所」の項目で成り立つ表を用意しています。
こちらの表の「顧客名」を基準に、顧客の住所を抽出する数式を作成していきます。

顧客名を入力すると同時に、顧客の住所を自動で表示させます。
XLOOKUP関数を使用して表示します。

顧客名から顧客の住所を抽出する数式は、以下になります。
=XLOOKUP(B6,顧客情報!A:A,顧客情報!B:B,"")
// B6:検索値(顧客名が入力されたセル)
// 顧客情報!A:A:検索範囲(顧客情報シートのA列全体)
// 顧客情報!B:B:戻り範囲(顧客情報シートのB列全体)
// "":見つからない場合は空白を表示

上記の数式をセルB4に入力するだけで、顧客の住所を表示することができます。
次に、請求日と顧客名を入力すると同時に、対象期間の請求データを自動で表示させます。
FILTER関数を使用して表示します。
請求日には、各月の1日の日付が入力させる前提で作成していきます。

請求日と顧客名から請求データを抽出する数式は、以下になります。
=FILTER(請求一覧!C:E,
(請求一覧!B:B=請求書!B6)*
(請求一覧!A:A>=EDATE(請求書!E4,-1))*
(請求一覧!A:A<=請求書!E4-1),"")
// 請求一覧!C:E:請求一覧シートの摘要、数量、単価の列を抽出
// 請求一覧!A:A>=EDATE(請求書!E4,-1):請求日1か月前以降
// EDATE(請求書!E4,-1):請求日の1か月前の日付
// 請求一覧!A:A<=請求書!E4-1:請求日の前日以前
※FILTER関数で複数条件を指定するときは「*」(And)または「+」(Or)で条件式を並べる

上記の数式をセルB11に入力するだけで、請求データを表示することができます。※数式の改行はなくても問題ないです。
請求データが表示されると同時に、他の項目(各金額、小計、消費税、合計金額)の数式が計算され、請求書が完成します。
以上の内容で完成です。
今後は、「請求一覧」シートに請求データを登録し、請求書を発行するときに、請求日(対象月の1日)と顧客名を入力するだけで、請求書(先月の請求データ)を作成することができます。
今回の仕組みを使えば、毎月の請求書を作成する時間を短縮できます。
ぜひ試してみてください。
▼サンプルファイル▼

外部システムからコピーして貼り付けたデータや、CSV形式のファイルを開いた際に、数字が文字列として認識されてしまうことがあります。
見た目は数字なのに、実際は文字列として扱われているため、SUM関数などの計算で正しい結果が得られないという問題が発生します。
例えば、以下のようなデータがあるとします。

この場合、数量の列に入力されている一部の数字は文字列として認識されており、「=SUM(C3:C7)」で集計しても、本来1200になるべきところが700になってしまいます。
正しく集計するためには、一部の文字列として入力されている数字を数値に戻す必要がありますが、毎回修正するのは面倒です。
特に複数人で扱うファイルの場合に、このような問題が発生します。
そこで今回は、文字列の数字は文字列のままで、SUM関数を使って正しく集計する方法について紹介していきます。
文字列の数字を数値に変換する最も簡単な方法は、演算を行うことです。
文字列の数字に対して数学的な演算(掛け算、足し算など)を行うと、Excelが自動的に数値として認識してくれます。
最も一般的なのは、「1を掛ける」という方法です。
=C3*1
以下のように、1を掛けた列を用意することで、すべてが数値に変換されて
表示されます。
そのため、SUM関数でも正しく集計できるようになります。

1を掛けた列を追加したくないという場合は、次の方法がおすすめです。
先ほどの「1を掛ける」という理屈を活用して、SUM関数の引数内で演算を行うことで、文字列の数字を含む範囲でも正しく集計できるようになります。
=SUM(C3:C7*1)

Excel 2019以前のバージョンを使用している場合は、先ほどの数式を配列数式として入力する必要があります。
配列数式として入力するには、数式を入力後、「Ctrl + Shift + Enter」を同時に押して確定します。
{=SUM(C3:C7*1)}
// 「{}」は自動入力(直接入力しても機能しない)

演算することで数値に変換するという方法は、LEFT関数などでも活用できます。
例えば、LEFT関数で抽出した文字列の数字を数値として扱いたい場合は、以下のような数式になります。
=LEFT(B2,3)*1

1を掛ける以外にも、以下の方法での数値変換も可能です。
=C3+0:+0を付ける
=--C3:--(マイナスを2回)を付ける
=C3/1:/1を付ける
文字列として保存された数字は、Excelでの計算において予期しない結果を生む原因となります。
そのため、数値の項目に、文字列の数字を入力しないというルールが重要にはなるのですが、複数人で扱っているファイルだと、一部の方が文字列の数字で入力(外部からの貼り付け)されることがあります。
そのような際に、この方法を覚えておけば、毎回文字列の数字を数値に変換する手間なく集計することができるようになります。

旧タイトル:【ex55】「&””」と「*1」の活用方法
VLOOKUP関数やXLOOKUP関数などの数式で、空を抽出する際に「0」になってしまう…
文字列の数字が混ざっていてSUM関数での集計ができない…
そんな悩みを解決する「&””」と「*1」について解説しています。
00:00 挨拶
00:40 技1:&””
04:33 技2:*1
08:36 まとめ
08:55 プレゼントについて

プロジェクトの進行管理では、区分ごとの工程に順序があるタスク管理表がよく使われます。
しかし、このような表を使う際に以下のような問題が発生することがあります:
・絞り込みを使用した場合:自分のタスクのみを表示できるが、全体の流れが分からなくなる
・絞り込みを使用しない場合:全体の流れは把握できるが、自分のタスクが分かりづらく、見落としてしまう可能性がある

この問題を解決するために、現在編集中のタスクの担当者と同じ担当者のセルを自動で色付けする仕組みを作成していきます。

※こちらで実現したファイルは、記事の最後にて配布しています。
1.担当者列(D列)全体を選択
2.不要なセル(ヘッダー行など)を、Ctrlキーを押しながらクリックして選択解除
→ 最終的にセルD3以降が選択された状態にする

1.[ホーム]タブから[条件付き書式]の[新しいルール]をクリック

2.[ルールの種類]で[数式を使用して、書式設定するセルを決定]を選択

3.以下の数式を入力
=AND(D3<>"",D3=INDIRECT("D"&CELL("row")))
// D3<>"":D3セルが空でない
// D3=INDIRECT("D"&CELL("row")):D3の値が現在アクティブな行のD列の値と同じ
// CELL("row"):現在アクティブなセルの行番号を取得
// INDIRECT(…):指定したアドレスのセルの値を取得

4.[書式]をクリックし、[塗りつぶし]タブから好みの色を選択

以上の手順で、完成です。
設定後は、以下の操作で色付けが自動更新されます:
・タスクのいずれかの項目を編集する
・F9キーを押して数式を再計算する

この設定により、タスク管理表の全体を表示したまま、操作した担当者のタスクが一目で分かるようになります。
そのため、全体の流れを把握しながら、自分のタスクを効率的に管理できるようになります。
条件付き書式を活用することで、タスク管理表の使い勝手を大幅に向上させることができます。
ぜひお試しください。
▼サンプルファイル▼

数値データを視覚的に分かりやすく表現したい時、星マーク(★)を使った評価表示は非常に効果的です。

今回は、0点から100点の点数を5段階の星(★)評価で表示する方法をご紹介します。
5段階で表現するには、点数が5段階のどの位置にあるのかを求める必要があります。
そのため、0点から100点の101通りの点数を5段階に分割し、その段階に応じて★の数を決定します。
まず、評価を表示する先頭のセルを選択し、以下の数式を入力します。
=C3/101*5
// C3:点数が入力されているセル
// 101:0~100点の101通りで割る
// 5:5段階評価にするため5倍する

確定後、表の最後までコピーすると、整数部分が0から4の5段階評価になります。

星の数を1~5個で表現するために、先ほど求めた数値の整数部分を1から5にします。
そのため、先ほどの数式に1を加えて、再度全体にコピーします。
=C3/101*5+1

これで整数部分が1から5になります。
この整数部分の数だけ★を並べるには、REPT関数を使用します。
=REPT("★",C3/101*5+1)
// "★":繰り返す文字列
// C3/101*5+1:繰り返す回数(小数部分は切り捨てられる)
この数式を先頭に入力して全体にコピーすることで、「★」に置き換えることができます。

5つの星を表示にするために、「☆」を追加します。
「☆」の数は、5から表示されている「★」の数を引いた数になります。
=REPT("★",C3/101*5+1)&REPT("☆",5-INT(C3/101*5+1))
// &:文字結合(★と☆をつなげる)
// INT(…):小数点以下を切り捨てる
// 5-INT(C3/101*5+1):「☆」の数
この数式を先頭に入力して全体にコピーすることで、完成です。

この方法を使えば、数値データを一目で理解できる「★」評価に変換できます。
レポートや資料作成時などに、データを可視化する際に活用してみてください。
数式が複雑に見えますが、理屈を理解すれば覚える必要もありません。
ぜひ試してみてください。

複数のExcelファイル(ブック)を同時に更新する仕組みの開発方法について解説しています。
こちらでは、各従業員の予定表ファイル(ブック)に、特定の予定を同時に入力する作業を例にしています。
00:00 挨拶
00:50 完成イメージ
01:57 準備
02:44 作成(1つの従業員ファイルを更新)
12:55 作成(引数の設定)
13:23 作成(複数の従業員ファイルを更新)
17:56 作成(実行ボタン)
18:31 完成
19:41 プログラムの全体
23:00 プレゼントについて
▼準備ファイル▼