教師の道具箱

教師の業務の効率を高めるソフトウェアや情報を提供

ユーザ用ツール

サイト用ツール


excel:line_break_in_cell

エクセルで複数行セルの参照

目的

4桁の数字で生徒名を表示させるのを、セル内改行で複数指定したものでも生徒名を羅列する関数マクロです。

下準備

氏名データのワークシートを用意します。

  1. ワークシート名は[1年][2年][3年]とします。数字は半角です。
  2. B2から縦に1組の氏名、C2から縦に2組の氏名などとします。

マクロを書く

  1. Visual Basic Editorを開きます。Alt + F11 キーで開くそうです。
  2. VBAプロジェクトを右クリックして、標準モジュールを追加
  3. 下記のコードを記述します。コピペ。
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 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki