2024/04/27
【2-20】空白の演算子とは

【2-20】空白の演算子とは

#空白 #マトリックス表 #MACTH #INDEX #VLOOKUP #INDIRECT

YouTubeで開く

Excelの参照演算子には「半角スペース」というものがあります。
(例)=A1:A10 B2:D2
この演算子の使い方と活用例について解説しています。

00:00 挨拶
00:59 準備
01:11 空白の演算子とは
02:16 活用例
09:33 活用例(応用)
23:42 補足
23:57 まとめ

▼実践用ファイル▼

2024/04/26
【ExcelVBA】VBAを使ってシートの初期設定を自動化

【ExcelVBA】VBAを使ってシートの初期設定を自動化

Excel関連の何かしらの作業を自動化する際に、便利な機能としてマクロというものがあります。
このマクロを開発することができるプログラミング言語がVBAになります。
こちらでは、以下の作業を自動化するマクロを、VBAを用いて開発する方法について解説していきます。
※開発したファイルは記事に最後にて配布しています。

【作業内容】

1.以下のテンプレートシート「YYYYMMDD」のコピーを作成し、シート名を作業日の日付(YYYYMMDD形式)にする

2.コピーしたシートのセルB2に作業日の日付を入力する

では早速、自動化するマクロを開発していきます。
※開発したマクロに関しては、「Ctrl+Shift+A」というショートカットで実行できるようにも設定していきます。

まずは、[開発]タブを選択し、その中の[マクロ]を選択します。

次に、以下の画面にて、好みの名前を入力し、[作成]を選択します。
こちらでは「シート作成」と入力しています。

表示されました以下の画面にて、プログラムを記述していきます。
※「Option Explicit」は設定内容によっては表示されません。


記述する内容は、以下になります。

こちらのプログラムに関して、1行ずつ解説していきます。

まずは、以下の内容について解説します。

Worksheets("YYYYMMDD").Copy After:=Worksheets(1)

こちらでは、「YYYYMMDD」のシートをコピーし、2枚目の位置に貼り付けています。
「Worksheets(1)」が先頭から1番目のシートを指しているため、「Copy」というコピーする機能の設定(引数)の「After」に「Worksheets(1)」を指定することで1番目のシートの後ろと指定しています。

次は、以下の内容について解説します。

With ActiveSheet
    .Name = Format(Date, "yyyymmdd")
    .Range("B2").Value = Date
End With

まずは、「With」について解説します。
「With」を用いることにより、「With」から「End With」の間に関して、「With」の後ろに指定した要素「ActiveSheet」を省略して記述することができるようになります。
省略して記述する場合は、「.」から記述します。

つまり、以下のプログラムと同じ意味になります。

ActiveSheet.Name = Format(Date, "yyyymmdd")
ActiveSheet.Range("B2").Value = Date

同じ要素(こちらでは「ActiveSheet」)に対して操作する場合は、「With」で囲むことによって、処理の塊が分かりやすくなります。

では次に、以下のプログラムについて解説します。

ActiveSheet.Name = Format(Date, "yyyymmdd")

「ActiveSheet」とは現在選択されているシートを指します。
シートをコピーして複製すると、その複製されたシートが自動で選択されるため、「ActiveSheet」は新たに追加したシートのことを指しています。
そのシートの名前「.Name」を「Format(Date, “yyyymmdd”)」で、マクロを実行した日付にしています。
「Date」で、マクロを実行した日付の情報を取得することができるのですが、シート名にはYYYYMMDD形式で設定したいため、Format関数を活用して、形式を変換しています。

では最後に、以下のプログラムについて解説します。

ActiveSheet.Range("B2").Value = Date

こちらでも先ほど同様に「ActiveSheet」を指定しています。
そのシートのセルB2「Range(“B2”)」の値「.Value」に、マクロを実行した日付「Date」を入力しています。


このようにして開発することができました。
開発したプログラムは、対象のプログラム名を指定し、実行ボタンを押すことで実行することができます。

実行することにより、以下のようにシートが作成され、セルB2に日付が入力されます。

注意点として、Excel上には同じシート名のシートを作成することができないため、同日に複数回実行すると、以下のようなエラーが表示され、処理が中断されます。

再度実行する際は、作成したシートを削除してから行う必要があります。 必要に応じて、シート名が重複した場合には「YYYYMMDD_2」のような番号を加えるようにプログラミングするのも良いかと思います。
その方法については、こちらでは省略します。

Excel本紹介

最後に、ショートカットの設定方法です。
毎回、VBAの編集画面(VBE)を開いて実行するのは手間になるため、ショートカット活用するのがオススメになります。
まずは、[開発]タブの中の[マクロ]を選択し、以下の画面を表示します。

こちらの画面より、開発したプログラム名を選択し、[オプション]を選択します。

以下の画面の[ショートカットキー]のテキストボックスを選択し、Shiftキーを押しながらAキーを押すことで、「Ctrl+Shift+A」というショートカットを設定することができます。

設定後は、[OK]を選択して確定し、設定画面を全て閉じることで、CtrlキーとShiftキーを押しながらAキーを押すして、開発したマクロを実行することができるようになります。

こちらで開発したファイルは、以下から取得できます。

Excel本紹介

今回の内容は、VBAを用いて繰り返し作業を自動化する一例になります。
ぜひ、日々の繰り返し作業の自動化に、VBAを活用してみてください。
※理解していないプログラムの実行は、情報漏洩データの紛失などの大きな問題につながる可能性があるため、理解した上で実行してください。

2024/04/25
【業務】記入時刻を自動で入力

【業務】記入時刻を自動で入力

#自動入力 #時刻 #経過時間 #Time #Date #標準モジュール #シートモジュール #Worksheet_Change

YouTubeで開く

特定のセルに値を入力すると同時に、隣のセルに入力時の時刻が自動で入力される仕組みです。
議事録や勤怠入力などに活用できるかと思います。

00:00 挨拶
00:36 完成イメージ
01:47 準備
02:23 作成(各項目の表示形式)
03:36 作成(開始時刻・実施日の自動入力)
06:53 作成(終了時刻の自動入力)
07:44 作成(時刻入力ボタン)
11:23 作成(記入時刻の自動入力)
16:28 作成(経過時間の計算)
21:01 完成
21:56 プログラムの全体
24:32 まとめ

▼準備ファイル▼

2024/04/24
【Excel】月単位の合計を数式で求める

【Excel】月単位の合計を数式で求める

以下の表は、各日付単位のイベントの参加人数をまとめた表になります。

こちらの表を元に、月単位の合計参加人数を求める数式を作成する方法について解説していきます。

まず初めに、以下のような集計結果を表示する用の表を作成します。
日付の項目に関しては、各月の1日の日付を入力しています。

上記の表の人数の項目に、集計結果を表示する数式を入力していきます。

対象のデータのみを集計するには、SUMIFS関数が便利です。
この関数の使い方は、以下の通りです。

=SUMIFS(合計対象範囲, 条件範囲1, 条件1, [条件範囲2, 条件2] ,[… )
// 合計対象範囲から指定した条件を満たしている対象のみの合計を返す
// 条件範囲と条件はセットで設定する
// 条件範囲2以降は、不要なら省略できる

こちらの関数を活用して、人数の項目に関して、以下の条件を満たしている対象のみの合計を求めていきます。

・日付の項目に関して、2023/10/1以降である
・日付の項目に関して、2023/10/31以前である
※2023年10月を集計する場合

「2023/10/1」という値は、以下の集計表の日付の項目の値を活用することができます。

ただ、「2023/10/31」という月末日の値は、今回用意する集計表には存在しないため、「2023/10/1」という値から求める必要があります。

特定の日付の月末日を求めるには、EOMONTH関数が便利です。
この関数の使い方は、以下の通りです。

=EOMONTH(開始日, 月)
// 開始日の(月)か月後の月末日を返す
// 開始日と同じ月の月末日を求める場合は、月に「0」と指定する

実際に、「2023/10/1」から「2023/10/31」を求める場合は、以下のようになります。

=EOMONTH(E3,0)

日付ではなく、「45230」といったシリアル値(日付を表す数値)が表示される場合は、表示形式を日付形式にすることで確認することができます。


では、SUMIFS関数EOMONTH関数を活用して月単位の合計参加人数を求めていきます。
対象の表(各日付単位のイベントの参加人数をまとめた表)に関して、今後もデータが追加されることを考慮すると、以下のような数式になります。

=SUMIFS(C:C,B:B,">="&E3,B:B,"<="&EOMONTH(E3,0))
// 合計対象範囲:C:C → 人数の列全体
// 条件範囲1:B:B → 日付の列全体
// 条件1:">="&E3 → 「>=」という「○○以上」を表す記号とセルE3の日付を「&」で結合
// 条件範囲2:B:B → 日付の列全体
// 条件2:"<="&EOMONTH(E3,0) → 「<=」という「○○以下」を表す記号とセルE3を参照してEOMONTH関数で求めた月末日を「&」で結合

後は、こちらの数式を集計表の最終行までコピーします。
※こちらの数式に関しては、集計対象の表の列全体を指定しているため、下方向にコピーした場合に関しても参照が動いてしまう可能性がありません。セルE3という集計対象月の1日の日付を参照しているセルに関してのみ、相対参照で移動します。

コピーすると以下のように求めることができます。


今回の数式の解説をまとめると、以下のようになります。

SUMIFS関数は、集計時に便利な関数なため、覚えておくと良いです。

2024/04/22
【Excel】指定した値以外のデータを瞬時に削除

【Excel】指定した値以外のデータを瞬時に削除

以下の表から特定の氏名のデータのみを残し、それ以外のデータを瞬時に削除する方法について2通りで解説していきます。

特定のデータのみを取り出して共有する際などに活用できます。

方法1

まず初めに、該当する項目の全範囲を選択します。
こちらでは、氏名を基準にデータを削除するため、氏名の一番上のセルを選択し、CtrlキーとShiftキーを押しながらカーソルキーの下を押して全選択します。

次に、残したい対象(氏名)のいずれかのセルを、Ctrlキーを押しながら2回選択します。
1回目の選択で、対象のセルの選択を解除し、2回目の選択でアクティブにしています。
こちらでは、「井上茂」を対象として選択します。

対象の項目を全選択している状態で、残したい対象のいずれかのセルがアクティブになっていることを確認し、CtrlキーとShiftキーを押しながら¥キーを押します。

この手順によって、以下のように対象のセル以外を選択することができます。

最後に、現時点で選択されているセルを基準に、行全体で削除します。

セルの削除は、Ctrlキーを押しながら「-(ハイフン)」キーを押すことで行えます。
以下の画面にて、[行全体]を選択し、[OK]で確定することで、対象のデータのみを残すことができます。

ExcelVBAレベル確認

方法2

別の方法として、フィルターを活用する方法もあります。

まず、対象の表の中にカーソルを置き、CtrlキーとShiftキーを押しながらLキーを押してフィルターを設定します。
※正しく設定されない場合は、表の範囲全体を選択してから、上記のショートカットを活用してください。

対象の項目のフィルターボタンより、対象外のデータのみを表示します。
こちらでは、「井上茂」のデータ以外を表示させています。

次に、表の中にカーソルを移動させ、Ctrlキーを押しながらAキーを押して、表全体を選択します。

次に、Ctrlキーを押しながら見出しのセルを選択し、表のデータのみを全選択している状態にします。

この状態で、Ctrlキーを押しながら「-(ハイフン)」キーを押して[行全体]を削除します。

最後に、再度CtrlキーとShiftキーを押しながらLキーを押してフィルターの設定を解除することで、対象のデータのみを残すことができます。

Excel本紹介

以上、2通りになります。
個人的には、前者の方法の方が早くてオススメになります。

2024/04/19
【Excel】セル内の特定の文字の数を求める

【Excel】セル内の特定の文字の数を求める

セルに入力されている文字から特定の文字の数を数式で求める方法について解説していきます。
こちらでは、以下の黄色のセルから「A」と「B」のそれぞれの数を数式で求めていきます。

・求め方

まずは、求める方法について考えていきます。
Excelには、セル内の特定の文字を数えるという機能は備わっていません。
そのため、数える仕組みを自身で作成する必要があります。
こちらでは、1つの方法について解説していきます。

こちらで紹介する方法は、「セル内の数えたい対象の文字を削除した文字列の文字数」と「元々の文字列の文字数」の差分を計算することで、対象の文字の数を求めます。

Excel本紹介

・数式の作成

では実際に、先ほどの仕組みを数式で求めていきます。
数式で求めるには、「特定の文字を消すための関数」「文字の数を求める関数」を活用する必要があります。

「特定の文字を消すための関数」はExcelには用意されていないため、文字を置換するSUBSTITUTE関数を活用して求めていきます。

SUBSTITUTE関数の使い方は、以下の通りです

=SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象])
// [文字列]の中の[検索文字列]を[置換文字列]に置換する
// 文字列:対象の文字列
// 検索文字列:置換したい文字列
// 置換文字列:置換する文字列
// [置換対象]:検索文字列が複数存在する場合に、先頭から何番目の対象の文字を置換するのかを数値で指定
// ※省略時は全ての検索文字列を置換

SUBSTITUTE関数を用いて特定の文字を消すためには、以下のように活用します。

=SUBSTITUTE(B2,"A","")

「文字の数を求める関数」は、LEN関数になります。

LEN関数の使い方は、以下の通りです。

=LEN(文字列)
// 指定した[文字列]の文字の数を返す
// 文字列:対象の文字列

以下のように活用します。

=LEN(B2)

SUBSTITUTE関数とLEN関数を用いて、特定の文字の数を求めていきます。

「セル内の数えたい対象の文字を削除した文字列の文字数」は、以下のように求めることができます。

=LEN(SUBSTITUTE(B2,"A",""))
// 「A」の文字を削除した場合の文字数

そのため、以下のように、元々の文字数から上記の文字数を引くことで、特定の文字の数を求めることができます。

=LEN(B2)-LEN(SUBSTITUTE(B2,"A",""))

上記の内容は「A」の文字数になります。
「B」の文字数に関しても、以下のように求めることができます。

=LEN(B2)-LEN(SUBSTITUTE(B2,"B",""))

今回のように、関数を組み合わせることによって、好みの値を求めることができます。
特定の文字の数ではなく、他の値を求める場合などで、関数を組み合わせても求めることができない場合、もしくは、かなり複雑な数式になってしまう場合は、VBAを活用するのが良いかと思います。
(VBAとは、「Visual Basic for Applications」の略称で、ExcelやWordなどといったMicrosoft Officeのアプリケーションの機能を拡張することができるプログラミング言語になります。)

2024/04/18
【業務】数式のみで比較シートを作成

【業務】数式のみで比較シートを作成

#シート比較 #TEXTJOIN #COUNTIF #IF #条件付き書式

YouTubeで開く

「旧」と「新」の2枚のシート内の表を元に、データの編集(更新)・新規・削除を判定する数式の作成方法について解説しています。
比較後、「新」のシート内容を「旧」のシートに貼り付けることで、繰り返して比較シートを活用することができます。

00:00 挨拶
00:50 完成イメージ
02:10 準備
02:39 比較方法の確認
03:24 作成(計算用の列)
12:03 作成(比較結果の表示)
14:47 作成(応用:比較結果の表示)
20:57 作成(比較結果の色変更)
23:51 完成
26:28 まとめ

▼準備ファイル▼

2024/04/17
【Excel】表の途中に行を一瞬で挿入

【Excel】表の途中に行を一瞬で挿入

表の途中にデータを追加する場合、行を挿入する必要があります。
行の挿入は、右クリックから[挿入]を選択して、[下方向にシフト]を選択することで行えますが、手順が2つもあるため、若干大変になります。

実は、瞬時に行を挿入することができる小技があります。
こちらでは、その方法について解説していきます。

まずは、行を挿入したい位置の上のデータを選択します。

次に、右下の四角マークの上にカーソルを移動させます。

この位置でShiftキーを押すと、十字マークが平行線のマークに変わります。

Shiftキーを押している状態で、必要な行数分ドラッグすることで、瞬時に行を挿入することができます。


この方法では、ドラッグした範囲のみが挿入されます。

また、行方向だけではなく、列方向への挿入も可能です。

2024/04/15
【Excel】数式の参照元(先)のセルを瞬時に選択

【Excel】数式の参照元(先)のセルを瞬時に選択

Excelには数式の参照元や参照先を矢印で示す機能(参照元(先)のトレース)が用意されていますが、こちらでは、その機能ではなく参照元のセルを瞬時に選択する方法について解説していきます。

【補足】

矢印で示す機能は、[数式]タブの中の[参照元(先)のトレース]になります。

では、本題の機能について解説していきます。
まずは、参照元のセルを確認したい数式が入力されているセルを選択します。

次に、[ホーム]タブの中の[検索と選択]にある[条件を選択してジャンプ]を選択します。

以下の画面にて、[参照元]を選択し、[1レベルのみ]もしくは[すべてのセル]を指定して[OK]で確定します。

選択することによって、以下のように瞬時に参照元のセルを選択することができます。

複数のセルが選択された場合は、Enterでアクティブセルを移動することができます。
※[参照先]では参照先のセルが存在する場合に、そのセルが選択されます。


こちらの機能は、ショートカットも用意されています。
ショートカットは以下になります。

・参照元(1レベルのみ):Ctrl+[(左角括弧)
・参照元(すべてのレベル):Ctrl+Shift+[(左角括弧)
・参照先(1レベルのみ):Ctrl+](右角括弧)
・参照先(すべてのレベル):Ctrl+Shift+](右角括弧)

【補足】

参照元の選択に関しては、別シートの参照に関しても選択することができます。
ただ、別シートの場合は、数式の先頭に別シートへの参照がある場合に関してのみ、選択することができます。

(例)
・=IF(Sheet1!A1=””,B2,B4):Sheet1のセルA1のみ選択
・=IF(Sheet1!A1=””,Sheet1!B2,B4):Sheet1のセルA1のみ選択

・=IF(A1=””,B2,Sheet1!B4):セルA1,B2のみ選択
・=IF(A1=””,B2,B4):セルA1,B2,B4を選択

2024/04/12
【Excel】簡易的な検索機能を数式のみで実現

【Excel】簡易的な検索機能を数式のみで実現

「文字を入力するだけで、その文字を含む名前のデータのみを瞬時に抽出することができる検索機能」を数式のみで実現する方法について解説していきます。
以下の画像では、セルH3に入力した文字を含む名前のデータを左の表から右の表に抽出しています。

こちらでは、完全一致検索と部分一致検索の2通りについて順番に解説していきます。
※使用したファイルは、記事の最後にて配布しています。

・完全一致検索の実現

特定の条件を満たすデータのみを抽出するには、FILTER関数が便利です。
FILTER関数は、365もしくはExcel2021以降で対応している関数になります。
FILTER関数の使い方は以下の通りです。

=FILTER(配列, 含む, [空の場合])
// 条件を満たすデータのみを抽出する
// 配列:対象の表
// 含む:抽出条件
// [空の場合]:対象が1件もない時に表示する値(省略時はエラーを表示)

この関数を使用して、以下のように記述することで実現することができます。

=FILTER(B3:E1000,C3:C1000=H3,"")
// B3:E1000:表の範囲はデータの増減に対応するため大きめに指定する
// C3:C1000=H3:検索対象の項目の行数は表の範囲と同じにする必要がある

この1つの数式だけで、以下のように対象のデータを抽出することができます。

こちらの場合は、対象が1件のみのため、1件のみが抽出されました。


・部分一致検索の実現

部分一致検索を実現するには、先ほどの以下の数式の「C3:C1000=H3」という条件式について理解する必要があります。

=FILTER(B3:E1000,C3:C1000=H3,"")

条件式について理解するために、まずは「C3:C1000=H3」という数式のみを入力してみます。

= C3:C1000=H3

入力して確定すると、以下のようにTRUEもしくはFALSEという値が表示されます。

TRUEもしくはFALSEという値は、指定した表のデータの数分表示されます。
このTRUEにあたるデータが条件を満たしていて抽出する対象のデータになります。

そのため、部分一致の検索を実現するには、検索欄「セルH3」の値が含むデータのみにTRUEと表示するような条件式を考える必要があります。

そのような条件式を実現するには、FIND関数とIFERROR関数を活用します。
FIND関数の使い方は、以下の通りです。

=FIND(検索文字列, 対象, [開始位置])
// [対象]に[検索文字列]が含まれる場合に、その文字列の先頭からの位置情報を返す
// 検索文字列:検索する文字列
// 対象:検索する対象の文字列
// ※[開始位置]に関しては、今回は使用しないため省略する

実際に活用した例は、以下になります。

=FIND(H3,C4)

入力して確定すると、以下のように見つかった位置の情報を返します。

ちなみに、検索文字列が見つからない場合は、エラーになります。

=FIND(H3,C3)

条件式では、0以外の数値がTRUE、0がFALSEとして扱われるため、エラーの値に関してIFERROR関数を用いて、0と表示していきます。
IFERROR関数の使い方は、以下の通りです。

=IFERROR(値, エラーの場合の値)
// 指定した[値]がエラーの場合に、[エラーの場合の値]を返す
// エラーでない場合は、指定した[値]をそのまま返す
// 値:エラーを検証する対象の値
// エラーの場合の値:エラーの場合に返す値

先ほどの数式にIFERROR関数を組み合わせると、以下のようになります。

=IFERROR(FIND(H3,C3),0)

入力して確定することで、以下のようにエラーの場合に0とすることができます。


後は、必要な行数分表示させる必要があるため、FIND関数の引数[対象]に複数の範囲を指定します。

=IFERROR(FIND(H3,C3:C1000),0) 

これだけで、必要なデータの数分のTRUEもしくはFALSEを意味する値を表示することができるため、こちらの条件式をFILTER関数に設定します。

=FILTER(B3:E1000,IFERROR(FIND(H3,C3:C1000),0),"")

入力して確定することで、部分一致の検索機能を実現することができます。


FILTER関数を用いて検索機能を実現することによって、元の表を触らずに対象のデータの抽出ができます。
検索した内容を残したい場合は、同じような検索機能をコピーして作成すると良いです。
コピーして作成した場合に関しても、元のマスタとなる表は1つのため、最新の表が分からなくなるというような事態を防ぐことができます。

こちらで作成した検索機能のExcelファイルは、以下になります。

2024/04/11
【便利】入力と同時に全角文字に変換

【便利】入力と同時に全角文字に変換

#全角文字 #半角文字 #StrConv #シートモジュール #Worksheet_Change

YouTubeで開く

予め指定したセルに文字を入力して確定すると同時に、半角文字が含まれている場合に自動で全角文字に変換する仕組みになります。
こちらでは、全角文字への変換ですが、必要に応じて、半角文字への変換などとアレンジできます。

00:00 挨拶
01:38 完成イメージ
02:23 準備
02:53 作成(全角文字変換)
10:19 作成(全角文字変換:欠点の改善)
12:57 完成
14:29 プログラムの全体
17:16 まとめ

▼準備ファイル▼