教師の道具箱

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

ユーザ用ツール

サイト用ツール


excel:line_break_in_cell

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
excel:line_break_in_cell [2023/10/09] – 作成 administratorexcel:line_break_in_cell [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.1
行 1: 行 1:
 +===== エクセルで複数行セルの参照 =====
 +{{:excel:linebreakincell1.png?nolink&900|}}
 +==== 目的 ====
 +4桁の数字で生徒名を表示させるのを、セル内改行で複数指定したものでも生徒名を羅列する関数マクロです。
 +==== 下準備 ====
 +氏名データのワークシートを用意します。
 +  - ワークシート名は[1年][2年][3年]とします。数字は半角です。
 +  - B2から縦に1組の氏名、C2から縦に2組の氏名などとします。
  
 +{{:excel:linebreakincell2.png?nolink&900|}}
 +==== マクロを書く ====
 +  - Visual Basic Editorを開きます。Alt + F11 キーで開くそうです。
 +  - VBAプロジェクトを右クリックして、標準モジュールを追加
 +  - 下記のコードを記述します。コピペ。
 +
 +<code vb>
 +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
 +</code>

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki