2024/09/16
【Excel】複数条件で値を抽出

【Excel】複数条件で値を抽出

2つのキーから値を検索して抽出する場合、今までは、以下のように検索用の列を用意する必要がありました。

しかし、2021以降のバージョンに新たに追加されたFILTER関数を活用することで、上記のような検索用の列を用意する必要がなくなりました。
今回は、FILTER関数を活用して、検索用の列を用意せずに2つのキーから値を検索して抽出する方法について解説していきます。

紹介する方法は、数ある方法の中の1つになります。
他の関数を活用しても実現することができるので、色んな方法を試されると良いです。


FILTER関数の使い方は、以下のとおりです。

=FILTER(配列, 含む, [空の場合])
// 配列:抽出対象の範囲
// 含む:抽出条件
// [空の場合]:抽出対象が1件もない場合に表示する値(省略可)

FILTER関数で複数条件で指定する場合は、AND「*」、もしくは、OR「+」を活用します。

実際に、FILTER関数を用いて以下の表からキー1とキー2が一致する値を抽出していきます。

この場合は、抽出対象の範囲がD7~D12になります。
次に抽出条件が以下の2つになります。
・キー1:B7~B12の中でB3と一致するデータ
・キー2:C7~C12の中でC3と一致するデータ

実際に、FILTER関数の引数に割り当てることによって、以下のように抽出することができます。

=FILTER(D7:D12,(B7:B12=B3)*(C7:C12=C3),"なし")
// キー1とキー2が一致する場合になるため、それぞれの条件をAND「*」で並べる
// 抽出対象が1件もない場合は「なし」と表示する

※黄色のセルに数式を入力しています。

一致するデータが複数件ある場合は、セルから溢れ出て、以下のように表示されます。


補足

複数の連続した項目を抽出する場合は、スピル(セルから溢れ出して表示する機能)を活用することで、以下のように1つの数式で表現することができます。

=FILTER(D7:E12,(B7:B12=B3)*(C7:C12=C3),"なし")
2024/09/13
【Excel】項目に合わせて自動入力切替

【Excel】項目に合わせて自動入力切替

以下のように、項目ごとに入力を切り替える必要がある構成の表があります。

こちらの表の場合は、通常、以下のように入力モードの切り替えを行います。

日付:半角文字
名前:全角文字
フリガナ:全角文字 or 全角カタカナ

この入力モードの切り替えを自動で行う設定方法について解説していきます。

ExcelVBAレベル確認

このような設定は[データの入力規則]にて行います。
以下の表の日付の項目に対し、半角文字の入力を自動設定する方法について解説していきます。

まずは、設定対象の範囲を全選択します。
こちらでは日付の項目のみを選択していますが、他にも同じ設定をしたいセルがあれば、一緒に選択することで、一括で設定できます。

選択できましたら、[データ]タブより[データの入力規則]を選択します。

表示された設定画面にて、[日本語入力]タブを選択し、IMEの設定を行います。

デフォルトですと、「コントロールなし」が選択されているかと思います。
こちらを「オフ(英語モード)」にして確定することで、設定完了です。

同様に、名前の項目には「ひらがな」フリガナの項目には「全角カタカナ」を設定します。


以上の設定を行うことで、選択しているセルに応じて、入力モードを自動で切り替えることができます。

2024/09/12
【便利】データを自由に移動できる機能

【便利】データを自由に移動できる機能

#ActiveCell #Offset #If #Selection #TypeName

YouTubeで開く

対象のデータ行を自由に移動することができる機能の開発方法になります。
対象のデータを選択し、ボタン1つで「上、下、交換」といった操作が行えます。

00:00 挨拶
00:12 完成イメージ
01:58 準備
02:28 作成(ウィンドウ枠の固定)
03:04 作成(データ交換機能)
09:23 作成(データ交換機能の汎用化)
09:59 作成(上に移動する機能)
12:52 作成(下に移動する機能)
14:10 作成(2つの行を交換する機能)
16:53 作成(実行ボタン)
18:03 完成
18:47 補足(警告を表示)
19:24 プログラムの全体
23:29 プレゼントについて

▼準備ファイル▼

2024/09/11
【Excel】商品ごとの発注単位を考慮したリスト

【Excel】商品ごとの発注単位を考慮したリスト

以下のように、設定した最低発注数と発注単位によって、発注数のドロップダウンリストに表示する値を変更する方法について解説していきます。


行ごとでリストに表示させる内容を変更する場合は、リストに表示させる値を行ごとで求める必要があります。
例えば、リストに11件表示させる場合は、以下のような一覧が必要になります。

(例1)
最低発注数:100
発注単位:10
リストの元となる一覧:100,110,120,130,140,150,160,170,180,190,200

(例2)
最低発注数:200
発注単位:50
リストの元となる一覧:200,250,300,350,400,450,500,550,600,650,700

このようなリストの元となる一覧を、行ごとに数式を用いて求めていきます。

まずは開始の値です。
開始の値に関しては、最低発注数を参照するだけで求めることができます。

=C3

この数式を必要な行数分コピーすることで、簡単に行ごとの開始の値を求めることができます。

次に、発注単位の値を加えた等差の一覧を、隣の列に表示させます。
求め方は、先ほど求めた値に発注単位を加えるだけです。

=G3+$D$3
// 発注単位のセルの列は固定する必要があるため「$」を加える

この数式を必要な行数、列数分コピーすることで、行ごとのリストの元となる一覧を作成することができます。

一覧の用意ができましたら、[データの入力規則]にてリストを設定していきます。

まずはリストを設定する対象の範囲を選択し、[データ]タブから[データの入力規則]を選択します。

表示された設定画面にて、[入力値の種類]を「リスト」にし、[元の値]にアクティブになっているセルに反映したいリストの元となる一覧の範囲を指定します。

セルを選択して範囲指定すると、以下のように絶対参照の数式が入力されます。

=$G$3:$Q$3

ただ、この数式に関しては、行ごとに参照する位置を変更する必要があるので、行番号の手前の「$」を外し、列のみを固定とした参照に修正します。

=$G3:$Q3
// 範囲選択後にF4キーを2回押すことでも入力可能

この設定内容で確定することで、行ごとに異なるリストを設定することができます。

2024/09/09
【Excel】重複を除いた件数と重複した件数

【Excel】重複を除いた件数と重複した件数

申し込みフォームから取得したメールアドレスなどで、「重複を除いた件数」と「重複した件数」を求める方法について解説していきます。

・重複を除いた件数

まずは、以下の表の申し込みされたメールアドレスから重複を除いた件数を求めていきます。

重複を除いた件数は、UNIQUE関数COUNTA関数を組み合わせることで求めることができます。
それぞれの関数の使い方は、以下のようになります。

=UNIQUE(配列)
// 指定した表から行単位で重複を除外した表を返す
// 配列:対象の表
※実際には他の引数も存在し、他の引数を指定することで、列単位で重複を除外することも可能
=COUNTA(値1, [値2], [値3], …)
// 範囲内の空白でないセルの数を返す
// 値:対象の値、もしくは、対象の範囲
※[値2]以降は省略可能

まずは、UNIQUE関数を用いて、申し込みされたメールアドレスの重複を除いた一覧を取得します。

=UNIQUE(B:B)
// 今後追加されることを考慮し列全体を指定

次に、この取得した一覧の件数を、COUNTA関数を用いて求めます。

=COUNTA(UNIQUE(B:B))

ただ、この件数には、空白セルから取得された「0」見出しの「申し込み」という値の件数まで含まれます。
そのため、COUNTA関数で求めた件数から「0」と「申し込み」を取り除いた件数、要するに「-2」した件数が重複を除いた件数になります。

実際に求めてみると、以下のようになります。

=COUNTA(UNIQUE(B:B))-2

・重複した件数

では次に、重複した件数を求めていきます。

重複した件数は、申し込みされたメールアドレスの件数から、実際の申し込み件数を引いた件数になります。
申し込みされたメールアドレスの件数は、COUNTA関数で求めることができます。
そのため、COUNTA関数の取得値先ほど求めた重複を除いた件数を用いて、以下のように求めることができます。

=COUNTA(B:B)-1-D3
// 今後追加されることを考慮し列全体を指定
// 先ほどとは異なり「0」が含まれないため、見出し分の「-1」した件数から、重複を除いた件数を引く

以上のように、UNIQUE関数COUNTA関数を用いることによって「重複を除いた件数」「重複した件数」を求めることができました。

2024/09/07
【ex41】条件付き書式では設定できない罫線を設定

【ex41】条件付き書式では設定できない罫線を設定

#条件付き書式 #罫線

YouTubeで開く

通常、条件付き書式では太線や二重線などといった一部の罫線を設定することができません。
そのような罫線を条件付き書式で設定する方法について解説しています。

00:00 挨拶
00:54 概要
01:17 通常の罫線に戻す方法
04:33 罫線を消す方法
05:55 注意点
06:35 まとめ
06:51 プレゼントについて

▼準備ファイル▼

2024/09/06
【Excel】FILTER関数で存在しない場合に好みのデータを表示

【Excel】FILTER関数で存在しない場合に好みのデータを表示

FILTER関数を活用することで表から指定した条件を満たすデータのみを抽出することができます。また、該当するデータが1件も存在しなかった場合には、予め指定した値を表示することができます。

=FILTER(B:D,B:B=F3,"なし")

今回は、該当するデータが1件も存在しなかった場合に表示する値を、以下のような好みのデータにする方法について3通りで解説していきます。

・方法1

1つ目は、HSTACK関数を活用する方法です。

HSTACK関数では、指定した範囲を横方向に結合することができます。
この関数の使い方は、以下になります。

=HSTACK(配列1, [配列2, 配列3, …])
// 配列:対象の範囲(配列2以降は省略可能)

こちらの関数を活用して、好みのデータを作成します。
例えば、『日付の項目に「検索した日付(セルF3)」、商品の項目に「-」、金額の項目に「0」』を表示させる場合、以下のような数式になります。

=HSTACK(F3,"-",0)

この内容をFILTER関数の[空の場合]に指定することで、好みのデータを表示することができます。

=FILTER(B:D,B:B=F3,HSTACK(F3,"-",0))

ただ、HSTACK関数は現状(2024/8時点)365のみにしか対応していません。
FILTER関数は2021から使うことができますが、HSTACK関数を使うことができないため、他の方法についても解説していきます。


・方法2

2つ目は、関数を使わずに好みのデータを表示する方法です。

この方法では、他のセルの値を参照して表示することはできませんが、固定のデータの場合は便利な方法になります。

固定のデータを、関数を使わずに表示する場合は、「{}」を活用します。
「{}」の中に必要な項目数分の値を「,」区切りで指定することによって複数列のデータを表現することができます。
例えば、『日付の項目に「-」、商品の項目に「-」、金額の項目に「0」』を表示させる場合、以下のような数式になります。

={"-","-",0}

この内容をFILTER関数の[空の場合]に指定することで、好みのデータを表示することができます。

=FILTER(B:D,B:B=F3,{"-","-",0})

・方法3

3つ目は、CHOOSE関数を活用する方法です。

CHOOSE関数では、指定した複数の値の中から指定した番号の位置の値を表示することができます。
この関数の使い方は、以下になります。

=CHOOSE(インデックス, 値1, [値2, 値3, 値4, …])
// インデックス:表示する番号
// 値n:インデックスがnの場合に表示する値(値2以降は省略可能)

活用例は以下になります。

=CHOOSE(2,B2,C2,D2)

実は、この関数のインデックスに、方法2で解説した「{}」を活用して複数の番号を指定することで複数の列に該当する値を表示することができます。
例えば、『日付の項目に「検索した日付(セルF3)」、商品の項目に「-」、金額の項目に「0」』を表示させる場合、以下のような数式になります。

=CHOOSE({1,2,3},F3,"-",0)
// {1,2,3}:1番目、2番目、3番目の順番で列方向へ表示する

この内容をFILTER関数の[空の場合]に指定することで、好みのデータを表示することができます。

=FILTER(B:D,B:B=F3,CHOOSE({1,2,3},F3,"-",0))

Excelが2021の場合は、方法2や方法3に関しても覚えておくと良いかと思います。
また、固定のデータを表示する場合は、方法2を活用することで数式を短く表現することができるため、HSTACK関数が対応していたとしても方法2を活用するのが良いかと思います。

2024/09/05
【業務】効率的に入力できるシフト表

【業務】効率的に入力できるシフト表

#表示形式 #条件付き書式 #COUNTIF

YouTubeで開く

数値を入力するだけで、自動で「休、早、遅」などといった内容を入力することができるシフト表の作成方法について解説しています。
1つ1つの予定をテンキーのみで簡単に入力することができるため、入力作業の効率化が図れます。

00:00 挨拶
00:20 完成イメージ
02:11 準備
02:29 はじめに
02:37 表示形式とは
04:52 条件付き書式とは
06:37 シフト表に反映
09:12 完成
10:00 プレゼントについて

▼準備ファイル▼

2024/09/04
【Excel】瞬時に先頭(末尾)のシートへ移動

【Excel】瞬時に先頭(末尾)のシートへ移動

以下のように複数のシートが存在するファイルの場合、先頭もしくは末尾のシートへ移動するのが大変のように感じます。

今回は、瞬時に先頭もしくは末尾のシートへ移動する方法について解説していきます。


その方法とは、Ctrlキーを押しながら「<」や「>」のアイコンをクリックするだけです。
それだけで先頭もしくは末尾のシートまでスクロールすることができるので、後は対象のシートをクリックすることで、そのシートを表示できます。

もしくは、「<」や「>」のアイコンを右クリックすることで、シートの一覧を表示することができるので、その一覧から対象のシートを選択することでも対象のシートを表示できます。


・補足

「<」や「>」の上にカーソルを移動させて数秒待つと、これらの方法が表示されます。

2024/09/02
【Excel】複数の表を結合して重複を除外する

【Excel】複数の表を結合して重複を除外する

以下のように、灰色の見出しの3つの表を縦方向に結合し、重複を除いた表(緑の見出しの表)に抽出する数式の作成方法について解説していきます。


・複数の表を縦方向に結合

まずは、複数の表を縦方向に結合する方法から解説していきます。

複数の表(範囲)を縦方向に結合する場合は、VSTACK関数を活用します。
この関数の使い方は、以下になります。

=VSTACK(配列1, [配列2, 配列3, …])
// 指定した配列を縦方向に結合して返す
// 配列:結合対象の表(配列2以降は省略可能)

実際に活用して3つの表を結合すると、以下のようになります。

=VSTACK(B3:C6,E3:F7,H3:I6)

このように、指定した順番で表を結合して抽出することができます。


・表から重複を除外

次に、表から重複したデータを除外する方法について解説していきます。

先ほど結合した表には重複したデータが存在します。
以下の画像では、同じ色のデータが重複しています。

これらの重複を一括で除外する場合は、UNIQUE関数を活用します。
この関数の使い方は、以下になります。

=UNIQUE(配列)
// 指定した表から行単位で重複を除外した表を返す
// 配列:対象の表
※実際には他の引数も存在し、他の引数を指定することで、列単位で重複を除外することも可能

実際に先ほどのVSTACK関数の数式に組み合わせると、以下のように重複を除外した表を抽出することができます。

=UNIQUE(VSTACK(B3:C6,E3:F7,H3:I6))
2024/08/31
【ex40】SUMIF関数での複雑な集計を簡単に行う

【ex40】SUMIF関数での複雑な集計を簡単に行う

#SUMIF #SUMIFS #FILTER #SUM

YouTubeで開く

SUMIF関数、SUMIFS関数では集計が難しいものでも、FILTER関数を活用することで簡単に集計できることがあります。
こちらでは、その例の1つについて解説しています。

00:00 挨拶
00:45 準備
01:08 SUMIF関数での集計が難しい理由
03:23 簡単に集計する方法
05:22 まとめ
06:12 プレゼントについて

▼準備ファイル▼

2024/08/30
【Excel】基準日から「年・月・曜日・月末」などを求める

【Excel】基準日から「年・月・曜日・月末」などを求める

セルに入力された基準日から「年・月・曜日・月末」などを求める際に活用する関数活用例について解説していきます。


・年月日をそれぞれ求める

年、月、日を日付から求めるには、以下の関数を活用します。

・年:YEAR関数
・月:MONTH関
・日:DAY関数

活用例は以下になります。

=YEAR(B2) // 年
=MONTH(B2) // 月
=DAY(B2) // 日

・曜日を求める

曜日を日付から求めるには、TEXT関数が便利です。
TEXT関数は指定した値に指定した表示形式を適用した文字列を返す関数です。

曜日を表示する表示形式には、以下のようなものがあります。

・aaa:漢字(1文字) 月
・aaaa:漢字(3文字) 月曜日
・ddd:英語(3文字) Mon
・dddd:英語 Monday

漢字(3文字)で抽出した活用例は以下になります。

=TEXT(B2,"aaa")

・月末を求める

月末を日付から求めるには、EOMONTH関数が便利です。
EOMONTH関数は指定した日付を基準にNか月後の月末を求めることができます。
※Nは任意の数値

活用例は以下になります。

=EOMONTH(B2,-1) // 1か月前
=EOMONTH(B2,0) // 当月
=EOMONTH(B2,1) // 1か月後

こちらの方法の場合は、日付から月末を求めていますが、年と月のみから月末を求める場合は他の方法になります。
その方法については、最後に解説します。


・1日を求める

1日を日付から求めるには、先ほどの同じEOMONTH関数が活用できます。
EOMOTH関数は月末を求める関数ですが、指定した月の1日を求める際にも活用できます。

1日という日付は、見方を変えると先月末の1日後とも言えます。
そのため、求めたい月の先月末をEOMONTH関数で求め、その日付に1を加えることで求めることができます。

求めた例が以下になります。

=EOMONTH(B2,-2)+1 // 1か月前
=EOMONTH(B2,-1)+1 // 当月
=EOMONTH(B2,0)+1 // 1か月後

こちらの方法の場合は、日付から1日を求めていますが、年と月のみから1日の日付を求める場合は他の方法になります。


・年と月のみから1日と月末を求める

年と月のみから日付を求める場合は、DATE関数を活用します。
DATE関数は、年・月・日を別々で指定することで、その年・月・日が指す日付を求める関数です。

1日の日付を求める場合は日のみを直接「1」と指定することで求めることができ、月末を求める場合は翌月の1日の1日前ということで、月に「月+1」、日に「0(1日の1日前という意味)」と指定することで求めることができます。
※DATE関数は年月の桁上がり桁下がりにも対応しています。

求めた例が以下になります。

【1日】
=DATE(B1,B2-1,1) // 1か月前
=DATE(B1,B2,1) // 当月
=DATE(B1,B2+1,1) // 1か月後
【月末】
=DATE(B1,B2,0) // 1か月前
=DATE(B1,B2+1,0) // 当月
=DATE(B1,B2+2,0) // 1か月後

・まとめ

以下の6つの関数を活用して、基準日から他の値を求める方法について解説しました。

YEAR関数
MONTH関数
DAY関数
TEXT関数
EOMONTH関数
DATE関数

6つの関数ではありますが、それぞれの関数を応用して活用することで、6つ以上の多様な値を求めることができます。
ぜひ色んな使い方を試し、新たな発見を楽しんでみてください。