4桁の数字で生徒名を表示させるのを、セル内改行で複数指定したものでも生徒名を羅列する関数マクロです。
氏名データのワークシートを用意します。
Function SeitoName(ByVal nums As String) As String Dim result As String '変数を定義 Dim num As String Dim Lfcount As Integer Dim i, g, c, n As Integer Lfcount = 0 'セル内改行をカウント For i = 1 To Len(nums) '繰り返し処理 If Mid(nums, i, 1) = vbLf Then Lfcount = Lfcount + 1 '改行だったらインクリメント Next result = "" For i = 0 To Lfcount '繰り返し処理 If i > 0 Then result = result & vbLf '2行目以降はセル内改行を付加 num = Split(nums, vbLf)(i) '指定した1行抜き出す g = Int(Mid(num, 1, 1)) '4桁数字のうち1文字目は「学年」 c = Int(Mid(num, 2, 1)) '2文字目は「組」 n = Int(Right(num, 2)) '3、4文字目は「出席番号」 result = result & WorksheetFunction.Index(Worksheets(g & "年").Range("B2:K61"), n, c) Next SeitoName = result '連結した氏名を吐き出す End Function