Q.

Excelでランダムな数を返すような関数はありますか?VBAで関数を作成する必要がありますか?


A.

Excelでは、VBAを使わなくても標準関数でランダムな数を生成できます。以下に代表的な関数を紹介します。


✅ Excel標準のランダム関数

関数名機能
RAND()0以上1未満の乱数を返す=RAND() → 例:0.5483
RANDBETWEEN(bottom, top)指定した範囲の整数乱数を返す=RANDBETWEEN(1, 100) → 例:57

🔁 応用例(少数・カスタム範囲)

  • 1〜10の少数を返したい場合
    =RAND()*9+1(1以上10未満の少数)

  • 10〜20の整数を返す
    =RANDBETWEEN(10, 20)


🧠 注意点

  • RAND()RANDBETWEEN()ワークシートが再計算されるたびに値が変わります
  • 固定したい場合は「コピー → 値として貼り付け」で静的な数値に変換可能です。

📌 VBAで関数を自作する必要があるのは?

  • より複雑な確率分布(正規分布や偏りのある乱数)を扱う場合
  • 再計算しても変わらないランダム値が欲しい場合
  • 複数セルに一括で一意なランダム値を割り振りたい場合

必要であれば、VBAでの乱数関数の作り方も紹介できます。
ご希望の用途はどのようなランダム値でしょうか?


Q.

Excelでリンク付きのテキストの入ったシェルからテキストのみを抜き出す関数とリンクのみを抜き出す関数を


A.

Excelでは、**リンク付きテキスト(ハイパーリンク付きセル)**から次の2つをそれぞれ抜き出すことは、標準関数では直接できません。
しかし、**VBA(ユーザー定義関数)**を使えば以下のように可能です。


✅ 1. 表示テキストのみを抜き出す関数(=GetLinkText)

これは標準の =A1 でも表示テキストは取得できますが、以下のVBAでも明示的に取得できます。

Function GetLinkText(rng As Range) As String
    GetLinkText = rng.Text
End Function

✅ 2. リンクURLのみを抜き出す関数(=GetLinkURL)

これは通常のセル参照では取得できないため、VBAが必要です。

Function GetLinkURL(rng As Range) As String
    On Error Resume Next
    GetLinkURL = rng.Hyperlinks(1).Address
End Function

📝 使用方法

  1. Excelを開いて Alt + F11VBAエディタを開く
  2. 挿入 > 標準モジュール を選んで、上記のコードを貼り付ける
  3. VBAエディタを閉じて、シートで以下のように使う
=GetLinkText(A1)  ' → 表示されている文字列
=GetLinkURL(A1)   ' → リンク先URL

⚠️ 注意点

  • ハイパーリンクが複数あるセルには対応していません(通常のExcelセルには1つだけ)。
  • セルに手動で文字列+URLが書かれているだけのもの(例:「クリック → www.example.com」)は対象外です。

リンク付きセルの自動処理や複数処理にも対応したい場合は、範囲対応型にもできます。必要ですか?