
注意
概要
使用上の注意
自動計算と手動計算の切り替え
実装機能
作成手順
1. シートの作成
2. 名前の登録
2-1. 項目名の登録
2-2. 名前の登録
2-3. 関数の挿入
2-4. 関数の説明
2-5. 完成イメージ
3.[情報]シートの入力
3-1. 項目名の入力
3-2. 関数の入力
3-3. 完成イメージ
3-4. プルダウンリストの項目の設定
3-5. 完成イメージ
3-6. 最大値
3-7. 完成イメージ
4.[出力]シートの入力
4-1. 設定欄の作成
4-2. 完成イメージ
4-3. 出力欄と導出表欄の項目の入力
4-4. 導出表欄の作成
4-5. 完成イメージ
4-6. 出力欄の作成
4-7. 完成イメージ
あとがき
文章量が多くなっています
ご注意ください
ダミー用ネームをランダムに作成してくれるツールです
こちらはマクロなしバージョンの説明になります
作成手順について説明していきます
使用手順やファイルのダウンロードについてはnoteというサイトに記載しています
乱数を発生させています
Excel作業をする度に内容が変更されてしまいます
変更しない場合や作業をする場合は自動計算の設定を手動計算の設定にしてからやることをお勧めします
出力対象(姓名/姓/名)、性別を選択し件数を入力すると、 出力欄に出力される
ここからは作成手順と関数の説明をしていきます
下記シートを作成します

[名前一覧]シートに項目名と名前を登録します
下記セルに項目名を入力します
| セル | 入力内容 | セル | 入力内容 |
|---|---|---|---|
| A1 | 【姓_漢字】 | E1 | 【名_漢字】 |
| A2 | 姓(漢字) | E2 | 名(漢字) |
| B2 | 姓(かな) | F2 | 名(かな) |
| C2 | カウント | G2 | 性別 |
| H2 | カウント | ||
下記列の3行目以降に名前を登録します
| 列 | 登録内容 | 列 | 登録内容 |
|---|---|---|---|
| A | 漢字の姓 | E | 漢字の名 |
| B | 漢字の姓に対するかな | F | 漢字の名に対するかな |
| G | 性別(男/女) | ||
セルC3とセルH3にそれぞれ関数を挿入します
【セルC3】
=SEQUENCE(ROWS(FILTER(A3:A1000000, A3:A1000000<>"")))
【セルH3】
=SEQUENCE(ROWS(FILTER(E3:E1000000, E3:E1000000<>"")))
【ROWS関数】
指定した範囲に含まれる行数や配列数を返す
[構文]
=ROWS(array)
[引数]
array:行数を数えたい範囲や配列
[使用例]
=ROWS(A1:A10)
→10
=ROWS({1;2;3;4})
→4
=ROWS(A:A)
→1048576(Excelの最大行数)
【FILTER関数】
条件に一致するデータを抽出してスピル出力する動的配列関数
Excel365/2021以降で利用できる
[構文]
=FILTER(array, include, [if_empty])
[引数]
array:抽出したい範囲
include:抽出条件(TRUE/FALSE の配列)
if_empty:一致がない場合に返す値(省略可)
[使用例]
=FILTER(B:B,A:A=1)
→A列が「1」の行の名前をすべて抽出
=FILTER(B:C,(A:A=1)*(D:D="女"))
→A列が「1」かつ D列が「女」の行を抽出
【SEQUENCE関数】
連続した数列を自動生成する関数
動的配列関数なので、結果がセルにスピル展開される
Excel365/2021以降で利用可能
[構文]
=SEQUENCE(rows, [columns], [start], [step])
[引数]
rows:生成する行数(必須)
columns:生成する列数(省略可、既定値は1)
start:開始値(省略可、既定値は1)
step:増分(省略可、既定値は1)
[使用例]
=SEQUENCE(5)
→1,2,3,4,5を縦に出力
=SEQUENCE(5,1,10)
→10,11,12,13,14を縦に出力
=SEQUENCE(5,1,10,2)
→10,12,14,16,18を縦に出力
=SEQUENCE(1,5)
→1,2,3,4,5を横に出力
=SEQUENCE(3,4)
→3行×4列の連番を展開(1~12)
下記セルに項目名を入力します
| セル | 入力内容 | セル | 入力内容 |
|---|---|---|---|
| B3 | シート名 | B13 | 名 |
| D3 | 開始行 | B14 | 終了行 |
| B4 | 漢字 | C14 | 最大値_男女 |
| B5 | 姓 | D14 | カウント_男 |
| B6 | 終了行 | E14 | カウント_女 |
| C6 | 最大値 | B16 | 項目名 |
| B8 | 項目名 | C16 | 列 |
| C8 | 列 | D16 | 結合 |
| D8 | 結合 | B17 | カウント |
| B9 | カウント | B18 | 名(漢字) |
| B10 | 姓(漢字) | B19 | 名(かな) |
| B11 | 姓(かな) | B20 | 性別 |
ダイレクトに文字列を入力してもいいのですが、
途中で行/列/セルを挿入したときに一々修正をしないといけなくなります
なので、関数で実現できるところは関数で実現します
セルC9と同様
セルC9と同様
セルの内容と文字列を結合しています
セルB7と同様
セルC7と同様
セルD15と同様
セルC9と同様
セルC9と同様
セルC9と同様
セルC9と同様
セルD9と同様
今回は項目が増えることはありませんが、
プルダウンリストの項目を設定するときは癖でテーブルを作成し、
作成したテーブルを参照するようにプルダウンを作成します
下記セルに項目名を入力します
プルダウンリストは[出力]シートにて作成しますので、ここではテーブル化まで説明します
| セル | 入力内容 | セル | 入力内容 |
|---|---|---|---|
| G2 | 出力対象_姓名 | G7 | 性別 |
| G3 | 姓名 | G8 | 男女 |
| G4 | 姓 | G9 | 男 |
| G5 | 名 | G10 | 女 |
出力対象_姓名
1. テーブル化したいセル範囲(G2:G5)を選択後、「挿入」タブをクリックし、テーブルグループの「テーブル」を選択します

2. テーブルの作成ダイアログボックスが出るので、
「先頭行をテーブルの見出しとして使用する」にチェックを入れ、「OK」をクリックします

3. 「テーブルデザイン」タブをクリックします

4. テーブル名を「出力対象_姓名」に変更します

性別
出力対象_姓名と同様に行います
セル範囲G7:G10をテーブル化し、テーブル名は「性別」にしておきます
プルダウンリストの件数に表示する最大値を求めます
下記セルに項目名を入力します
| セル | 入力内容 |
|---|---|
| I2 | 最大値 |
| J2 | 姓 |
| K2 | 名 |
下記セルに関数を挿入します
姓の欄と名の欄の積
セルK3と同様
下記セルに項目名を入力します
| セル | 入力内容 | セル | 入力内容 |
|---|---|---|---|
| B1 | 【設定】 | B3 | 性別 |
| B2 | 出力対象(姓名/姓/名) | B4 | 件数 |
下記セルにプルダウンリストを設定します
セルC2と同様です
手順1ではセルC3を選択します
手順7では下記を入力します
=INDIRECT("性別")
下記セルに入力規則と日本語入力を設定します
下記セルに関数を入力します
[情報]シートのセルI3で作成した最大値を参照し、カンマ区切りで表示するようにしています
分かりやすいように、「最大値:」という文字列を前につけています
下記セルに項目名を入力します
| セル | 入力内容 | セル | 入力内容 |
|---|---|---|---|
| F1 | 【出力】 | L1 | 【導出表】 |
| F2 | 番号 | L2 | 番号 |
| G2 | No | M2 | 漢字 |
| H2 | 漢字 | N2 | かな |
| I2 | かな | O2 | 性別 |
| J2 | 性別 | ||
セルF1とセルL1は選択範囲で中央にしておくと見栄えがよくなります
セルの結合をするとフィルターがしづらかったり、その他不都合が出ることがあります
選択範囲内で中央にする方法は下記です
導出表欄の下記セルに関数を挿入します
長くなっています
分かりやすいように改行とそれぞれの行の前に空白を入れています
セルL3には、連番を振りたいです
そのため最大番号となる数値を知る必要があります
IFS関数とSEQUENCE関数のみでできています
設定欄の出力対象(姓名/姓/名)欄と性別欄の内容によって条件をわけています
ただし、出力対象欄が「姓」だと性別判定はしません
情報シートのセルC7,C15,D15,E15にはそれぞれ、
姓,名(男女),名(男),名(女)の最大値が入っています
出力対象が姓名のとき、姓×名が最大値となります
その最大値をSEQUENCE関数に入れることにより、連番が自動的に振り分けられるのです
SEQUENCE(...)-1→0から始まる番号列
/情報!$C$15→名の件数で割ることで「姓の繰り返し単位」を作る
INT(...)→小数点切り捨てで「姓の行番号」を決定
+1→Excelの行番号は1から始まるので補正
MOD(..., 情報!$C$15)→名の件数で割った余りを使う
余りが「0~名数-1」になるので、名の行番号を決定
+1→行番号補正
※姓が固定されたまま、名が順番に切り替わる
位置指定で値を返す
構文
=INDEX(配列, 行番号, [列番号])
>
条件に一致する行を動的に抽出
構文
=FILTER(配列, 条件, [空の場合])
文字列をセル参照に変換
構文
=INDIRECT(参照文字列, [参照形式])
連続した数列を自動生成
構文
=SEQUENCE(行数, [列数], [開始値], [増分])
小数点以下を切り捨て
構文
=INT(数値)
割り算の余り
構文
=MOD(数値, 除数)
仕組みはセルM3と同じである
参照先のセルが異なっていて、かな部分を参照している
出力欄の下記セルに関数を挿入します
並べ替えのキーを指定して配列を並べ替える
構文
=SORTBY(
配列, 並べ替え範囲1,
[順序1], [並べ替え範囲2],
[順序2], …
)
配列:並べ替えたい範囲や配列
並べ替え範囲1:並べ替えの基準となる範囲
順序1:1 → 昇順、-1 → 降順
並べ替え範囲2, 順序2(省略可):複数のキーで並べ替える場合に指定
動的配列で乱数を生成する
構文
=RANDARRAY([行数], [列数], [最小値], [最大値], [整数])
行数(省略可):生成する乱数の行数。省略すると 1
列数(省略可):生成する乱数の列数。省略すると 1
最小値(省略可):乱数の下限。省略すると 0
最大値(省略可):乱数の上限。省略すると 1
整数(省略可):TRUE → 整数、FALSE → 小数。省略すると FALSE
設定欄の件数までの数値を1から順に返します
ただし、件数が空欄の場合は出力しません
構文
=XLOOKUP(
検索値, 検索範囲, 戻り範囲,
[見つからない場合], [検索モード],
[一致モード]
)
検索値:探したい値
検索範囲:検索対象となる範囲
戻り範囲:見つかったときに返す値の範囲
見つからない場合(省略可):検索値が見つからなかったときに返す値
検索モード(省略可):順方向(1)、逆方向(-1)、バイナリ検索(2/-2)
一致モード(省略可):完全一致(0)、次に大きい値(1)、次に小さい値(-1)、ワイルドカード一致(2)
導出表の番号欄に対するかなを出力します
ただし、件数が空欄の場合は出力しません
導出表の番号欄に対する性別を出力します
ただし、件数が空欄の場合は出力しません
ツールの作成もかなり時間がかかりましたが、
こちらのページを作るのもかなり時間がかかりました
ただ、Copilot先生にかなり助けられて、
ツールの作成・ページの作成ができたこと、
今のAIはすごく優秀だなと思いました
今回、色々な関数を改めて知ることができたのは大きなことだと思っています
仕事でExcelを使うことが多いので、そちらにもいつか活きてくると信じて…
ここまでご覧いただきありがとうございました