2025/10/07
【Excel】FILTER関数1つで離れている項目を抽出

【Excel】FILTER関数1つで離れている項目を抽出

FILTER関数は、表から指定した条件を満たしたデータのみを抽出する関数です。
表の中の連続した項目を抽出する場合は、以下のように抽出することができます。

(例)「雇用形態」が「アルバイト」の「氏名・雇用形態・所属部署」を抽出

=FILTER(B:D,C:C="アルバイト","")

しかし、離れている項目の場合、以下のように、項目ごとにFILTER関数を入力して抽出している方も少なくないかと思います。

(例)「雇用形態」が「アルバイト」の「氏名・入社日」を抽出

=FILTER(B:B,C:C="アルバイト","")
=FILTER(F:F,C:C="アルバイト","")

もちろん、このままでも抽出はできますが、以下のようなデメリットがあります。

・抽出条件や抽出項目が変わった時に、項目ごとの数式を1つ1つ修正する必要がある
・FILTER関数2つ分の計算処理が必要なため、表のサイズによってはファイルの動きが遅くなる

ということで、こちらでは、FILTER関数1つで離れている項目を抽出する方法について解説していきます。


離れている項目を指定する

連続した項目の場合は、以下のように「:」で範囲を一括で指定することができます。

=FILTER(B:D,C:C="アルバイト","")

しかし、離れている項目の場合、「:」だけで範囲を選択することができません。
そんな時は、HSTACK関数を組み合わせます。
HSTACK関数では、以下のように、指定した複数の範囲を水平方向に繋げることができます。

(例)「氏名・入社日」を先頭から6件抽出

=HSTACK(B2:B7,F2:F7)

そのため、HSTACK関数を使って、以下のような数式にすることで、連続した項目を1つの数式のみで抽出することができます。

(例)「雇用形態」が「アルバイト」の「氏名・入社日」を抽出

=FILTER(HSTACK(B:B,F:F),C:C="アルバイト","")
ExcelVBAレベル確認

まとめ

今回のように、1つの数式にすることで、以下の欠点が解消されます。

・抽出条件や抽出項目が変わった時に、項目ごとの数式を1つ1つ修正する必要がある
・FILTER関数2つ分の計算処理が必要なため、表のサイズによってはファイルの動きが遅くなる

しかし、今回の方法の場合、列を挿入すると、以下のように見出しとデータがずれてしまう可能性があります。

そのため、項目数が多い場合などは、見出し自体も数式で抽出するなどと対策すると良いです。

2025/10/04
【便利】異なる表示形式を瞬時に見つける

【便利】異なる表示形式を瞬時に見つける

#Selection #NumberFormatLocal #IF #For #表示形式

YouTubeで開く

指定した範囲内で、他のセルとは異なる表示形式が設定されているセルを、瞬時に見つける機能になります。

00:00 挨拶
01:13 完成イメージ
02:26 準備
03:05 作成(表示形式チェック機能)
10:21 作成(アドイン)
13:36 完成
15:05 プログラムの全体
16:46 プレゼントについて

▼準備ファイル▼

2025/10/03
【Excel】指定した期間の営業日数を求める

【Excel】指定した期間の営業日数を求める

固定曜日休みや休日(祝日など)を考慮した、指定した期間の営業日数を求める方法について解説していきます。


指定した期間の営業日数を求める

指定した期間の営業日数を求める場合は、NETWORKDAYS.INTL関数が便利です。

以下の表で営業日数(赤枠)を求めていきます。
休日を考慮する場合は、予め休日一覧表を用意する必要があります。

赤枠の先頭に、以下のような数式を入力します。

=NETWORKDAYS.INTL(B2,C2,1,休日一覧!$B$2:$B$100)
// B2:開始日
// C2:終了日
// 1:固定曜日休み(土日)
// 休日一覧!$B$2:$B$100:休日一覧表の日付の範囲(絶対参照)

固定曜日休みに関しては、以下の候補から選択することができます。

候補以外の組み合わせを指定する方法については、後半で解説します。

休日一覧表の範囲は、必ず日付が入力されているセル(空白セルを除く)のみにする必要があります。
休日一覧表に見出しが用意されている場合で、見出しを含む範囲を指定してしまうと、以下のようにエラーになってしまいます。

また、入力した数式を複数の範囲にコピーする場合は、休日一覧表の範囲を「$」を加えた絶対参照にする必要があります。

休日一覧!$B$2:$B$100

以上の内容を踏まえて、先ほどの数式を入力することで、以下のように営業日数を求めることができます。

他の行に関しても、数式をコピーするだけで営業日数を求めることができます。


候補にない固定曜日休みを指定する

候補にない固定曜日休みを指定するには、直接指定する必要があります。
直接指定する方法は、以下になります。

(例)月水金を固定休みとする場合

=NETWORKDAYS.INTL(B2,C2,"1010100",休日一覧!$B$2:$B$100)

先頭を月曜日、休みの曜日を「0」、営業日を「1」として、日曜日まで数字を並べて指定します。
上記の数式を入力することで、月水金を固定休みとした営業日数を求めることができます。


補足

NETWORKDAYS.INTL関数に似た関数で、NETWORKDAYS関数というものがあります。
NETWORKDAYS関数では、土日固定休みと休日を考慮した営業日数しか求めることができません。
固定曜日休みを指定する引数がないため、NETWORKDAYS.INTL関数を覚えていた方が、活用の幅が広がります。

2025/09/30
【Excel】最初に覚えるべき集計関数(7選)

【Excel】最初に覚えるべき集計関数(7選)

Excelを活用する際に、最初に覚えておくべき集計するための関数を7個紹介していきます。


1. SUM:数値の合計を求める

指定した範囲内の数値の合計を求める場合は、SUM関数を使います。

=SUM(B2:C7)

指定した範囲内に文字列を含んでいたとしても、集計することができます。
離れている範囲を指定する場合は、以下のようにカンマ区切りで指定します。

=SUM(B2:C3,B6:C7,D9)

2. COUNT:数値が入力されているセルの数を求める

指定した範囲内の数値が入力されているセルの数を求める場合は、COUNT関数を使います。

=COUNT(B2:C7)

離れている範囲を指定する場合は、以下のようにカンマ区切りで指定します。

=COUNT(B2:C3,B6:C7,D9)

3. COUNTA:何かしらの値が入力されているセルの数を求める

指定した範囲内の何かしらの値が入力されているセルの数を求める場合は、COUNTA関数を使います。

=COUNTA(B2:C7)

離れている範囲を指定する場合は、以下のようにカンマ区切りで指定します。

=COUNTA(B2:C3,B6:C7,D9)

4. SUMIF:特定の条件を満たした数値の合計を求める

指定した範囲内で特定の条件を満たしている数値の合計を求める場合は、SUMIF関数を使います。

=SUMIF(B2:B7,"A",C2:C7)
// B2:B7:条件を確認する項目
// "A":上記で指定した項目で集計する対象
// C2:C7:合計する項目

条件には、以下のような条件を指定することもできます。

・"A":Aである
・"*A":Aで終わる
・"A*":Aで始まる
・"*A*":Aを含む
・"<>A":Aでない
・">5":5より大きい
・">=5":5以上
・"<5":5より小さい
・"<=5":5以下

5. COUNTIF:特定の条件を満たしたセルの数を求める

指定した範囲内で特定の条件を満たしているセルの数を求める場合は、COUNTIF関数を使います。

=COUNTIF(B2:C7,"A")
// B2:C7:条件を確認する範囲
// "A":上記で指定した範囲で数える対象

SUMIF関数と同様に、色んな条件(「含む」や「より大きい」など)を指定することができます。

ExcelVBAレベル確認

6. SUMIFS:複数の条件を満たした数値の合計を求める

指定した範囲内で複数の条件を満たしている数値の合計を求める場合は、SUMIFS関数を使います。

=SUMIFS(D2:D7,B2:B7,"A",C2:C7,"B")
// D2:D7:合計する項目
// B2:B7:1つ目の条件を確認する項目
// "A":1つ目に指定した項目で集計する対象
// C2:C7:2つ目の条件を確認する項目
// "B":2つ目に指定した項目で集計する対象

SUMIF関数と同様に、色んな条件(「含む」や「より大きい」など)を指定することができます。

以下のように、3つ以上の条件を指定することもできます。

=SUMIFS(E2:E7,B2:B7,"A",C2:C7,"B",D2:D7,">10")

7. COUNTIFS:複数の条件を満たしたデータの数を求める

指定した範囲内で複数の条件を満たしているデータの数を求める場合は、COUNTIFS関数を使います。

=COUNTIFS(B2:B7,"A",C2:C7,"B")
// B2:B7:1つ目の条件を確認する項目
// "A":1つ目に指定した項目で数える対象
// C2:C7:2つ目の条件を確認する項目
// "B":2つ目に指定した項目で数える対象

SUMIF関数と同様に、色んな条件(「含む」や「より大きい」など)を指定することができます。

以下のように、3つ以上の条件を指定することもできます。

=COUNTIFS(B2:B7,"A",C2:C7,"B",D2:D7,">10")

まとめ

以上の7個の関数を知っているだけで、集計の幅が広がるため、ぜひ覚えるとよいです。

2025/09/27
【1-入門32】「0」の表示非表示を切り替える方法

【1-入門32】「0」の表示非表示を切り替える方法

#ピボットテーブル #表示形式

YouTubeで開く

数式やピボットテーブルで集計した結果の「0」の表示非表示を切り替える方法について解説しています。

00:00 挨拶
00:57 数式で求めた集計表の「0」を非表示にする方法1
02:03 数式で求めた集計表の「0」を非表示にする方法2
03:31 ピボットテーブルで求めた集計表の「0」を表示する方法
04:20 まとめ
04:40 プレゼントについて

2025/09/26
【Excel】表の入力必須項目を自動色付け(入力後は解除)

【Excel】表の入力必須項目を自動色付け(入力後は解除)

以下の表の「*」が付いた項目を入力必須項目とします。

上記の画像には入力漏れがあります。
しかし、ぱっと見では、どこが漏れているのかが分かりづらいです。

ということで今回は、以下のように、データが入力されている行に対して、入力必須項目が未入力の場合に、自動で色付けする設定方法について解説していきます。

※こちらで実現したファイルは、記事の最後にて配布しています。


入力必須項目が未入力の場合に色付け

特定の条件を満たしているセルを自動で色付けするには、条件付き書式を活用します。
まずは、入力必須項目の見出しを除く列全体を選択し、[ホーム]タブの中の[条件付き書式]から[新しいルール]を選択します。

次に、選択したセルが空白かどうかで色付けするかどうかを判断していきます。
その際は、設定画面で[ルールの種類]を[指定の値を含むセルだけを書式設定]にし、[次のセルのみを書式設定]を[空白]にします。

次に、[書式]を選択し、書式設定の画面の[塗りつぶし]タブから好みの色を選択します。

後は確定するだけで、以下のように、対象の項目の空白セルが色付けされます。

しかし、このままですと、データが存在していない行(12行目以降)も色付けされてしまいます。
いずれかの項目に値が入力されている場合のみに色付けするには、次の手順を行います。


いずれかの項目に値が入力されている場合のみに色付け

いずれかの項目に値が入力されている場合のみに色付けするためには、「いずれかの項目に値が入力されているかどうかを判定する条件」を加える必要があります。

今回の表の場合、数式が入力されている列が含まれないため、1つのデータ行の値の数をCOUNTA関数で数えて、その数が0よりも大きいかどうかで判定することができます。

では一度、先ほどの条件付き書式の設定を削除します。

次に、対象のセルを選択して、[新しいルール]を選択します。

設定画面が表示されましたら、以下の条件を設定していきます。

対象のセルが空白、かつ、対象行のいずれかのデータが入力されている

このような複雑な設定を行うには、[ルールの種類]を[数式を使用して、書式設定するセルを決定]にします。

表示されたテキストボックスに、選択基準のセルに対する条件式を入力します。
こちらの場合は、選択基準のセルがF2になるため、セルF2に対する以下のような条件式を入力します。

=AND(F2="",COUNTA(A2:G2)>0)
// F2="":セルF2が空の場合
// COUNTA(A2:G2)>0:該当行のいずれかの項目に値が入力されている場合
// AND(…):指定した複数条件のすべてを満たしている場合

ただ、ここで設定した条件式は、他の選択範囲にも相対的に反映されます。
そのため、他のセルに反映されるときに変わってほしくない参照範囲は、予め「$」を加えて固定しておく必要があります。

こちらの場合は、表の列をA~G列で固定したいので、以下のように「$」を加えます。

=AND(F2="",COUNTA($A2:$G2)>0)

条件式の入力ができましたら、[書式]を選択し、書式設定の画面の[塗りつぶし]タブから好みの色を選択します。

後は確定するだけで完成です。

以上の設定で、データが存在する行の入力必須項目で、未入力のセルのみが色付けされます。

▼サンプルファイル▼

2025/09/23
【Excel】海外資料を数式でサクッと翻訳

【Excel】海外資料を数式でサクッと翻訳

海外の企業から送られてくる資料などでは、以下のように英語で書かれていることがあります。

英語に慣れていない場合は、内容を読むのに苦戦します。
今回は、そんな時に使える翻訳する関数について解説していきます。


TRANSLATE関数

翻訳する関数、それはTRANSLATE関数です。
以下のように、対象の文字列、翻訳前と翻訳後の言語を指定します。

=TRANSLATE(B4,"en","ja")
// B4:対象の文字列
// "en":翻訳前の言語(英語)
// "ja":翻訳後の言語(日本語)

言語はリストから選択することができます。

上記の数式を入力するだけで、以下のように翻訳された結果が表示されます。

後は、他のセルにもコピーするだけで、全体を翻訳することができます。

※「2024/7/1」に対応した値を表示するセルには、表示形式を設定していないため、シリアル値(45474)が表示されています。

ただ直訳になるため、「Status」が「地位」のように、本来とは異なる翻訳がされることもあります。

他の言語にも翻訳することができるので、海外の企業に資料を共有する際にも活用できます。

=TRANSLATE(B4,"en","th")
// 英語をタイ語に翻訳
2025/09/20
【業務】表から該当する値をカンマ区切りで抽出

【業務】表から該当する値をカンマ区切りで抽出

#BYROW #UNIQUE #IF #LAMBDA #TEXTJOIN #条件付き書式

YouTubeで開く

表から該当する値を、数式のみで、カンマ区切りで自動抽出する方法になります。
こちらでは、各氏名に対し講座名を割り当てた表から、講座名ごとの氏名をカンマ区切りで抽出しています。
また、講座名の種類の増減にも対応しており、1度数式を用意すれば、今後修正する必要はありません。

00:00 挨拶
01:11 完成イメージ
01:59 準備
02:24 作成(講座名ごとの参加者を抽出)
05:46 作成(講座名の自動抽出)
11:42 作成(罫線の自動設定)
13:14 完成
13:58 プレゼントについて

▼準備ファイル▼

2025/09/20
【1-入門05】漢数字の表示方法

【1-入門05】漢数字の表示方法

#表示形式 #書式設定 #NUMBERSTRING #漢数字 #大字

YouTubeで開く

数字(数値)を漢数字に、瞬時に変換する方法について解説しています。
こちらの方法では、見た目のみを漢数字に変換するため、数式で集計することができます。

00:00 挨拶
00:14 漢数字を表示する方法
06:24 まとめ
06:40 プレゼントについて


IT予備メンバーに加入して連携すると、メンバー限定動画に切り替わります。

※サイト内の限定動画です。

数字(数値)を漢数字に、瞬時に変換する方法について解説しています。
こちらの方法では、見た目のみを漢数字に変換するため、数式で集計することができます。

00:00 挨拶
00:14 漢数字を表示する方法
06:22 まとめ

2025/09/19
【ExcelVBA】チェックボックスを動的に入力(一括チェック)

【ExcelVBA】チェックボックスを動的に入力(一括チェック)

以下の表は、各作業に対して「A~C」のクラスを割り当てる表です。
「A~C」にはチェックボックスが用意されており、それとは別に、「A~C」を一括でチェックする用のチェックボックス「全」も用意されています。

チェックボックスの作成方法は、以下の記事を参考にしてください。
>チェックボックスの作成方法

この「全」と「A~C」のチェックボックスは連動しており、以下のように動作します。


・「全」をチェック

・A~Cをすべてチェック

・「全」を外す


このような、動的なチェックボックスの作成方法について解説していきます。

※こちらで開発したファイルは記事の最後にて配布しています。


1. 開発準備

今回は、特定のチェックボックスを操作すると同時に、他のチェックボックスも操作するという仕組みを作っていきます。

チェックボックスが配置されたセルには、TRUEもしくはFALSEという値が入力されています。

つまり、チェックボックスが配置されたセルの値が操作されると同時に、必要に応じて、他のチェックボックスを操作する必要があります。

そのように、該当するシートのセルを編集すると同時に処理を自動で実行するには、「シートモジュール」「イベントプロシージャ」を活用します。
シートモジュールは、該当するシートのタブ上で右クリックし、[コードの表示]を選択することで表示することができます。

選択すると、以下のエディタ画面(VBE)が表示されます。
また、該当するシートのシートモジュールが表示された状態になります。
「Option Explicit」は、VBEの設定内容次第では表示されません。「Option Explicit」についての解説はこちらでは省略します。

次に、該当するシートのセルを編集すると同時に処理が実行される特殊なプロシージャ(イベントプロシージャ)を用意する必要があります。
そのためには、シートモジュールの左上のリストから「Worksheet」を選択します。

「Worksheet」を選択すると、自動で「Worksheet_SelectionChange」というプロシージャが表示されます。
このプロシージャは、該当するシート上のいずれかのセルが選択されると同時に処理が実行されるイベントプロシージャになります。

ただ、今回使用するイベントプロシージャは、セルを編集すると同時に処理が実行されるものになります。
そのため、右上のリストから「Change」を選択します。

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

ExcelVBAレベル確認

2. コードの記述

以下のコードを記述します。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim r As Range: Set r = Target

    If r.CountLarge = 1 And _
        r.Row >= 4 And r.Row <= 23 And _
        r.Column >= 3 And r.Column <= 6 Then
        
        Application.EnableEvents = False
        
        Dim r1 As Range: Set r1 = Cells(r.Row, "C")
        Dim r2 As Range: Set r2 = Cells(r.Row, "D")
        Dim r3 As Range: Set r3 = Cells(r.Row, "E")
        Dim r4 As Range: Set r4 = Cells(r.Row, "F")
        
        If r.Column = 3 Then
            If r.Value Then
                Range(r2, r4).Value = True
            Else
                Range(r2, r4).Value = False
            End If
        Else
            If r2 And r3 And r4 Then
                r1.Value = True
            Else
                r1.Value = False
            End If
        End If
        
        Application.EnableEvents = True
        
    End If

End Sub

では、コードについて解説していきます。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim r As Range: Set r = Target

    If r.CountLarge = 1 And _
        r.Row >= 4 And r.Row <= 23 And _
        r.Column >= 3 And r.Column <= 6 Then
        
        Application.EnableEvents = False
        
        '省略
        
        Application.EnableEvents = True
        
    End If

End Sub

「Worksheet_Change」というプロシージャの引数の「Target」に、編集されたセルの情報が渡されるため、そのセルの情報から、表の対象のセルが編集されたかどうかを確認しています。

まずは、入れ物(変数)「r」を用意し、そこにTargetの情報を割り当てています。

次に、編集されたセルが1つ(r.CountLarge = 1)で、行番号が4以上23以下(r.Row >= 4 And r.Row <= 23)、尚且つ、列番号が3以上6以下(r.Column >= 3 And r.Column <= 6)であることを確認しています。
こちらは、「チェックボックスが配置されている範囲内のセルが、単体で編集された場合」という条件になります。

この条件を満たした場合に、Ifの中の処理を実行します。
Ifの中では、他のチェックボックスを操作する可能性があります。
チェックボックスが操作されると、「Worksheet_Change」の処理が再度実行されてしまい無限ループになってしまう恐れがあります。
そのため、Ifの処理の中では、イベントを無効化する処理(Application.EnableEvents = False ~ Application.EnableEvents = True)を記述しています。

        Dim r1 As Range: Set r1 = Cells(r.Row, "C")
        Dim r2 As Range: Set r2 = Cells(r.Row, "D")
        Dim r3 As Range: Set r3 = Cells(r.Row, "E")
        Dim r4 As Range: Set r4 = Cells(r.Row, "F")
        
        If r.Column = 3 Then
            If r.Value Then
                Range(r2, r4).Value = True
            Else
                Range(r2, r4).Value = False
            End If
        Else
            If r2 And r3 And r4 Then
                r1.Value = True
            Else
                r1.Value = False
            End If
        End If

次に、操作されたセルと同じ行にあるチェックボックスのセルの情報を入れ物(変数)「r1~r4」に割り当てています。
そして、操作されたセルの列番号が3の場合とそれ以外の場合で、処理を分岐しています。

操作されたセルの列番号が3の場合は、「全」のチェックボックスが操作されたときになります。
そのため、「全」がチェックされている場合は、「A~C」のチェックボックスすべてをチェックし、「全」がチェックされていない場合は、「A~C」のチェックボックスすべてのチェックを外しています。
「A~C」のチェックボックスが配置されたセルは、連続したセルになっています。
そのため、「A」のチェックボックスのセルから「C」のチェックボックスのセルまでということで、「Range(r2, r4)」と範囲指定することができます。

ちなみに、以下の該当する処理に関しては、1行で表現することもできます。

            If r.Value Then
                Range(r2, r4).Value = True
            Else
                Range(r2, r4).Value = False
            End If

            Range(r2, r4).Value = r.Value

操作されたセルの列番号が3でない場合は、「A~C」のチェックボックスのいずれかが操作されたときになります。
そのため、「A~C」のチェックの有無を確認し、すべてがチェックされているときのみ、「全」をチェックし、それ以外は、「全」のチェックを外しています。

ちなみに、以下の該当する処理に関しても、1行で表現することができます。

            If r2 And r3 And r4 Then
                r1.Value = True
            Else
                r1.Value = False
            End If

            r1.Value = r2 And r3 And r4

3. 完成

以上の内容で実現できます。
「全」と「A~C」のチェックボックスが連動するようになります。


・「全」をチェック

・A~Cをすべてチェック

・「全」を外す


▼サンプルファイル▼

2025/09/16
【Excel・Googleスプレッドシート】マウスで横方向へスクロール

【Excel・Googleスプレッドシート】マウスで横方向へスクロール

マウスのマウスホイールを回転させることで、縦方向へのスクロールができます。

しかし、一般的なマウスホイールは縦方向にしか回転しません。
(※一般的という表現をしている理由は、マウスの中には横方向へのスクロールに対応しているものもあるためです。)
そのため、横方向へのスクロールは、スクロールバーを直接クリックしているという方も少なくないはずです。

ということで、今回は、一般的なマウスホイールを使って横方向へスクロールする方法について解説していきます。


横方向へのスクロール

Excelで横方向へスクロールする際は、「Ctrl」キーと「Shift」キーを押しながらマウスホイールを回転させます。
それだけで、横方向へスクロールすることができます。

Googleスプレッドシートの場合は、「Shift」キーのみを押しながらマウスホイールを回転させます。
それだけで、横方向へスクロールすることができます。


横方向へのスクロールに対応しているマウス

参考程度に、横方向へのスクロールに対応しているマウスを紹介します。
対応しているマウスには、大きく分けて以下の2種類があります。

・マウスホイールを横に倒してスクロール

>参考商品(Amazon)

・横方向へのスクロール用のホイール付き

>参考商品(Amazon)

横方向へのスクロールを高頻度で行う場合は、このようなマウスの導入を検討してみると良いです。

2025/09/14
【1-入門03】数式の基本・相対参照と絶対参照

【1-入門03】数式の基本・相対参照と絶対参照

#SUM #AVERAGE #ショートカット #表

YouTubeで開く

数式の基本(計算、関数、絶対参照・相対参照)について解説しています。

00:00 挨拶
00:55 基本の計算
06:23 基本の関数
11:15 相対参照と絶対参照
16:08 実践(請求書の作成)(IT予備メンバー限定)
16:18 まとめ
16:51 プレゼントについて


IT予備メンバーに加入して連携すると、メンバー限定動画に切り替わります。

※サイト内の限定動画です。

数式の基本(計算、関数、絶対参照・相対参照)について解説しています。

00:00 挨拶
00:27 基本の計算
05:55 基本の関数
10:47 相対参照と絶対参照
15:41 実践(請求書の作成)(IT予備メンバー限定)
20:16 まとめ