excel:line_break_in_cell
エクセルで複数行セルの参照
目的
4桁の数字で生徒名を表示させるのを、セル内改行で複数指定したものでも生徒名を羅列する関数マクロです。
下準備
氏名データのワークシートを用意します。
- ワークシート名は[1年][2年][3年]とします。数字は半角です。
- B2から縦に1組の氏名、C2から縦に2組の氏名などとします。
マクロを書く
- Visual Basic Editorを開きます。Alt + F11 キーで開くそうです。
- VBAプロジェクトを右クリックして、標準モジュールを追加
- 下記のコードを記述します。コピペ。
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
excel/line_break_in_cell.txt · 最終更新: 2023/10/09 (外部編集)