'文字列から英字 3 桁+数字 5 桁の ID を生成する関数(Excel 95) Option Explicit Function NifId(ByVal sText As String) As String Dim i As Long Dim dfFactor As Double Dim dfNum1 As Double Dim dfNum2 As Double Dim dfNum3 As Double Dim sResult As String '英字3桁+数字5桁で表現できる数 dfFactor = 1757600000 'カタカナに変換、半角に変換し、後ろにChr(0)を追加 sText = Trim(StrConv(StrConv(sText, vbKatakana), vbNarrow)) & String(8, Chr(0)) '先頭 8 バイトを数値化 dfNum1 = 0 For i = 1 To 8 dfNum1 = dfNum1 + Asc(MidB(sText, i, 1)) * (&h100 ^ (i - 1)) Next '要素数で割った余りを計算 dfNum1 = dfNum1 - Int(dfNum1 / dfFactor) * dfFactor '英字3桁部分の数値を計算 dfNum2 = Int(dfNum1 / (10 ^ 5)) '数字5桁部分の数値を計算 dfNum3 = dfNum1 - dfNum2 * (10 ^ 5) '英字3文字目を取得 sResult = Chr(dfNum2 Mod 26 + 65) '英字1、2文字目を取得 dfNum2 = dfNum2 \ 26 sResult = Chr(dfNum2 \ 26 + 65) & Chr(dfNum2 Mod 26 + 65) & sResult '数字5桁部分を付加 NifId = sResult & Format(dfNum3, "00000") End Function Sub Test() Debug.Print NifId("ぽう@くまうさ") End Sub