Excel 関数 パスワード生成 2通り

関連ページ: Excel VBAマクロでパスワードを自動生成する方法 | パスワード生成

方法1:文字列からランダムに文字を選んで結合する

最初の方法は、英大文字・英小文字・数字をまとめた文字列を用意し、その中からランダムに1文字ずつ取り出して結合する方法です。RANDBETWEEN関数で抽出位置を決め、MID関数で文字を取り出します。数式の仕組みがわかりやすく、使用する文字を自由に調整しやすいのが特徴です。

まず、ExcelのA1セルにパスワードの候補となる文字列を入力します。たとえば、次のような文字列を使用できます。

ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789

この例では、英大文字・英小文字・数字を候補にしています。数字の0や英字のOなど、見間違えやすい文字を候補から除外しているため、目視で確認したり手入力したりする場面にも配慮できます。候補に含める文字は、利用するサービスのパスワード要件に合わせて調整してください。

手順2:MID関数とRANDBETWEEN関数で1文字を抽出する

次に、B1セルへ次の数式を入力します。

=MID($A$1,RANDBETWEEN(1,LEN($A$1)),1)

それぞれの関数は、次の役割を持っています。

  • MID関数:文字列の指定した位置から、指定した文字数を取り出します。
  • RANDBETWEEN関数:指定した最小値と最大値の間から整数をランダムに選びます。
  • LEN関数:文字列の長さを取得します。ここでは、候補の文字列の最後の位置を求めます。

数式では、RANDBETWEEN関数が1から候補文字列の長さまでの位置を選び、MID関数がその位置にある1文字を抽出します。A1セルの文字列を変更すれば、パスワードに使用する文字の種類も変更できます。

手順3:必要な文字数だけ抽出して結合する

8文字のパスワードを作る場合は、B1からB8まで同じ数式を入力します。各セルで抽出された1文字を、別のセルで結合すればパスワードになります。

たとえば、C1セルに次の数式を入力します。

=B1&B2&B3&B4&B5&B6&B7&B8

文字列結合演算子の「&」を使うと、各セルの文字を順番につなげられます。セルの数を増減すれば、生成するパスワードの長さも変更できます。

CONCATENATE関数を使う場合は、次のようにも書けます。

=CONCATENATE(B1,B2,B3,B4,B5,B6,B7,B8)

対応するExcel環境では、TEXTJOIN関数を使って複数のセルを結合する方法もあります。ただし、区切り文字を指定する場合は空文字列を指定し、パスワードの途中に余分な文字が入らないようにします。

手順4:生成結果と文字数を確認する

C1セルに結合された文字列が表示されたら、必要な文字数になっているか、意図しない文字が含まれていないかを確認します。文字数は、たとえば次の数式で確認できます。

=LEN(C1)

この数式の結果が8なら、C1セルの文字列は8文字です。ただし、候補から文字をランダムに選ぶ仕組みなので、英大文字・英小文字・数字がそれぞれ必ず含まれるわけではありません。すべての種類を最低1文字ずつ含める必要がある場合は、文字の種類ごとに抽出する数式を組み合わせるなど、別の工夫が必要です。

複数のパスワードをまとめて作る場合の注意点

作成した数式を下方向へコピーすると、複数行のパスワードを生成できます。候補文字列を参照する部分には絶対参照の$A$1を使用しているため、コピーしても候補文字列の参照先は変わりません。

一方、RANDBETWEEN関数を含む数式は、Excelで再計算が行われると結果が変わることがあります。生成結果を確定しておきたい場合は、必要なパスワードを確認したうえで、セルをコピーして「値」として貼り付けます。元の数式を残す必要がある場合は、別のシートに値を保存すると管理しやすくなります。

方法2:文字コードや文字範囲を利用して生成する

2つ目は、CHAR関数とRANDBETWEEN関数を組み合わせ、文字コードから文字を生成する方法です。方法1のように候補となる文字列を直接用意するのではなく、指定した数値の範囲からランダムに整数を選び、その数値に対応する文字を取り出します。

手順1:CHAR関数で文字を生成する

ExcelのCHAR関数は、指定した数値に対応する文字を返します。たとえば、英大文字・英小文字・数字の範囲を扱う場合は、各文字に対応するコードの範囲を把握して数式を作ります。

英大文字のAからZを対象にする例として、次の数式を使用できます。

=CHAR(RANDBETWEEN(65,90))

RANDBETWEEN関数が65から90までの整数を選び、CHAR関数が対応する英大文字を返します。数式を再計算すると、生成される文字が変わる場合があります。

英小文字や数字も含めたい場合は、文字コードの範囲を組み合わせる必要があります。ただし、英大文字・英小文字・数字のコードはそれぞれ異なる範囲にあるため、1つの連続した範囲から整数を選ぶだけでは、必要な文字種を均等に扱えるとは限りません。

文字種を分けて生成する例として、次の3つの数式を利用できます。

  • 英大文字:=CHAR(RANDBETWEEN(65,90))
  • 英小文字:=CHAR(RANDBETWEEN(97,122))
  • 数字:=CHAR(RANDBETWEEN(48,57))

それぞれの数式で生成した文字を「&」などの文字列結合演算子でつなげれば、英大文字・英小文字・数字を含む文字列を作れます。たとえば、最初の3文字を各文字種から1文字ずつ生成し、残りの文字を追加する構成にすれば、各文字種が少なくとも1文字含まれる形にできます。

ただし、文字種ごとに固定した順番で配置すると、パスワードの先頭部分などに一定の規則が生まれます。実際の運用では、必要な文字種を含める条件と、生成した文字列全体の予測されにくさの両方を考慮してください。

文字コードを利用する方法でも、セルごとに1文字を生成し、最後に結合する基本的な流れは同じです。生成したい文字数に合わせて数式を配置し、文字列結合演算子やCONCATENATE関数などで1つの文字列にまとめます。

この方法は、使用する文字の範囲が明確で、数式で文字種を分けて扱いたい場合に便利です。一方、記号を含めたい場合や特定の文字を除外したい場合には、文字コードの範囲を調べて調整する必要があります。対象の文字コードや利用するExcel環境によって扱いが異なることもあるため、生成結果を確認しながら数式を設計しましょう。

方法1と方法2は、どちらもランダムな値を使って文字列を作りますが、文字を選ぶ仕組みが異なります。候補の文字を自由に管理したいなら方法1、文字コードの範囲を数式で指定したいなら方法2が適しています。

選ぶ基準おすすめの方法理由
使う文字を自由に指定したい方法1候補の文字列を編集するだけで調整しやすい
英大文字・英小文字・数字を分けて扱いたい方法2文字種ごとに文字コードの範囲を指定できる
見間違えやすい文字を除外したい方法1候補文字列から対象の文字を取り除ける
文字コードの範囲を使って生成したい方法2指定した範囲から文字を生成できる

どちらの方法でも、数式だけでパスワードの強度が保証されるわけではありません。生成結果の文字数や文字種を確認し、サービス側の条件に合っているかをチェックしてください。安全性を重視する用途では、暗号学的に安全な乱数を利用する専用のパスワード生成ツールも選択肢になります。

生成したパスワードを固定して複数行に展開する

Excelの関数で生成したランダムパスワードは、数式の再計算によって別の文字列に変わることがあります。生成結果を確定してから利用するには、必要な数だけ作成し、内容を確認したうえで値貼り付けを行いましょう。

生成結果を固定する手順

  1. パスワードを生成する:数式を入力したセルで、必要な文字数のパスワードが作成されていることを確認します。
  2. 複数行に展開する:数式を入力したセルを選択し、フィルハンドルを下方向へドラッグして、必要なセル範囲にコピーします。コピー先の各行で異なるパスワードが生成されているか確認してください。
  3. 生成結果をコピーする:確認したパスワードが入っているセル範囲を選択し、コピーします。
  4. 値貼り付けで固定する:同じセル範囲に値として貼り付けます。これにより、数式ではなく、その時点の文字列をセルに残せます。
  5. 保存して確認する:ブックを保存し、固定した文字列が変わっていないことを確認します。

値貼り付けを行う前に、元の数式を残す必要があるか検討してください。同じ場所に値を貼り付けると数式は置き換わります。必要なら別のシートやセル範囲に結果をコピーしてから固定すると、生成用の数式を残せます。

複数のパスワードを作るときの注意点

オートフィルで数式をコピーすると、参照先や数式の構成によって結果が変わります。文字列を参照する方式では、参照元の文字列がすべての行で正しく指定されているか確認しましょう。また、再計算のタイミングによって生成結果が変わる可能性があるため、必要な件数を作成したら、確認と値貼り付けをまとめて行うことが大切です。

複数人分のパスワードを一覧にする場合は、生成結果を固定するだけでなく、ファイルの保存先や共有相手も確認してください。固定した文字列が安全に保管されるわけではないため、パスワードを含むExcelファイルへのアクセスを必要な人に限定しましょう。

Excelでパスワードを生成するときのよくある間違い

数式が動作していても、指定した文字数や文字の種類が要件を満たしていなければ、利用先で登録できないことがあります。生成後は見た目だけで判断せず、次の項目を確認してください。

問題原因対処法
指定した文字数にならない数式内の繰り返し回数や結合するセル数が不足している生成する文字数と数式の構成を照合する
数字や英字が含まれない文字セット全体からランダムに選んでいるため、特定の種類が選ばれないことがある必要な文字種が含まれるか確認し、必須条件がある場合は生成方法を見直す
記号が使えない利用先で許可されていない記号を含めている利用先のルールを確認し、許可された文字だけを候補にする
セルの値が突然変わる乱数関数を含む数式が再計算された内容を確認した後、値貼り付けで固定する
先頭のゼロが消える数値として扱われたり、数式で数値に変換されたりしているパスワードを文字列として扱い、先頭のゼロを含めて確認する
同じパスワードが複数行にあるランダムな選択では同じ結果が出ることがある重複を確認し、必要なら再生成する
保存後に結果が変わる数式が残っており、再計算された保存前に値貼り付けを行い、固定された値を確認する
パスワードが第三者に見られる平文のままブックに保存され、ファイルが共有されているアクセス権を制限し、不要なコピーや共有ファイルを削除する

文字セットと文字数を確認する

英大文字、英小文字、数字、記号のうち、どの種類を使うかは利用先の条件に合わせます。文字列からランダムに文字を取り出す方式では、候補に含めた文字の中から選ばれるため、英数字を候補にしただけでは、すべての文字種が必ず含まれるとは限りません。

また、先頭のゼロを含む文字列は、数値として扱うと表示や変換の過程で意図しない変更が起こる場合があります。パスワードは計算対象の数値ではなく文字列として扱い、生成結果をそのまま確認してください。

値貼り付けは再計算による変更を防ぐための操作であり、パスワードそのものを暗号化する機能ではありません。ブックにパスワードを平文で保存すると、ファイルを閲覧できる人に内容を知られる可能性があります。共有範囲を必要最小限にし、メールなどでファイルを無制限に配布しないようにしましょう。

Excel関数によるパスワード生成は、表形式で複数の文字列を作成したい場合や、生成手順を自分で調整したい場合に便利です。ただし、乱数関数を組み合わせた数式が、暗号学的に安全な乱数を生成するとは限りません。重要なアカウントのパスワードを作る場合は、用途に応じて専用のパスワード生成ツールを選びましょう。

用途向いている方法確認したい点
Excel内で複数の文字列を試作するExcel関数文字数、文字セット、重複、再計算の有無
文字種や記号の条件を指定して作る条件設定に対応した専用パスワード生成ツール必要な文字種や文字数を指定できるか
重要なアカウント用のパスワードを作る暗号学的に安全な乱数を利用する生成ツール乱数生成方式や安全性に関する説明が明確か
生成したパスワードを継続的に管理するパスワードマネージャー安全な保存、入力補助、複数端末での利用などが必要に合うか

重要なアカウントでは安全性を優先する

ExcelのRANDBETWEEN関数やRAND関数は、通常の表計算で乱数を扱うための関数です。これらを使った数式だけで、暗号学的に安全な乱数が保証されるわけではありません。メール、金融サービス、管理者用アカウントなど、漏えい時の影響が大きい用途では、安全性を重視した専用ツールを利用するほうが適切です。

専用ツールを選ぶ際は、パスワードの長さや文字種を指定できるか、生成方式について説明があるか、生成結果を不要に保存・送信しない仕組みかを確認しましょう。生成したパスワードは、パスワードマネージャーなどを使って個別に管理すると、Excelの一覧表に平文で保存する運用を避けやすくなります。

パスワードを安全に作るための基本ルールは、安全なパスワードの作り方も参考にしてください。生成した文字列をどこに保存するかまで含めて、方法を選ぶことが重要です。

まとめ:用途に合う方法を選び、生成結果を固定

Excel関数を使えば、文字列からランダムに文字を取り出す方法や、文字コードを利用する方法でパスワードを作成できます。複数のパスワードを扱うときは、文字数と文字セットを確認し、必要な結果を値貼り付けで固定しましょう。

ただし、Excelの乱数関数による生成は、暗号学的に安全な乱数を保証するものではありません。まずは用途と利用先の条件を確認し、重要なアカウントには安全性を重視した専用生成ツールとパスワードマネージャーを利用することを検討してください。

よくある質問

Excelで生成したパスワードが再計算で変わるのはなぜですか?

RANDBETWEEN関数やRAND関数などを含む数式が再計算されると、参照する乱数が変わり、生成結果も変わることがあります。確定したい場合は値貼り付けで固定してください。

生成したパスワードを変更されないようにするには?

生成結果を確認してからセル範囲をコピーし、値貼り付けを行います。数式を残したい場合は、別のセル範囲に結果を貼り付けてください。

英大文字・英小文字・数字を必ず含められますか?

文字列からランダムに文字を選ぶだけでは、すべての文字種が含まれるとは限りません。各文字種を必須にする必要がある場合は、生成方法を工夫するか、条件指定に対応した専用ツールを使ってください。

パスワードの先頭にあるゼロが消える場合はどうすればよいですか?

パスワードを数値ではなく文字列として扱い、数式やセルの書式で数値への変換が起きていないか確認します。先頭のゼロを含め、生成結果を文字単位で確認してください。

値貼り付けをすればパスワードは安全になりますか?

値貼り付けで防げるのは、主に数式の再計算による意図しない変更です。パスワードの強度や保存時の安全性が高まるわけではありません。ファイルへのアクセス制限も必要です。

専用パスワード生成ツールを選ぶときは何を確認すべきですか?

文字数や文字種を指定できるか、生成方式の説明があるか、生成結果の保存や送信に関する扱いが明確かを確認します。重要な用途では安全性を優先してください。

執筆者について

山本 由紀 — セキュリティ編集者

パスワード生成ツールを管理し、パスワード安全性のガイドを最新の推奨事項に沿って確認しています。

editor@xn--zck6aw5jtct103b141a.com

ツールを使う すべての記事