【関数・プロパティ設定をつかう】

 8 文字が入っているセルの最大行を取得

 9 文字が入っているセルの最大列を取得

10 行のループで複数の文字列を連続分解

11 列のループで複数の文字列を連続分解

12 指定した行番号と列番号のセル番地を取得

13 特定の文字列を指定文字列に置き換える

14 セル列番号を英字の列名に変換

列のループで複数の文字列を連続分解

パイさん

「今回は、Excel VBA/マクロによって、

 Mid関数文字列のループ処理、更に、列のループ処理を組み合わせて、

 複数列の文字列を上端から下端まで順に1文字ずつ分解してみましょう


 予め、次のようなExcelシートを用意します。

 Excelの1行目の文字が入っているセルの最大列を取得した後、最小列から最大列にかけて、

 1行目のセルから取得した文字列を上端から下端まで順に1文字ずつ分解した文字を、

 2行目から13行目までのセルに順に格納してみましょう。

 読取行:『読取行』を『1』行目、最小列:『最小列』を『3』列、

 最大列を変数『最大列』、列を変数『Cm』、最大文字数を変数『最大文字数』、

 書込行を変数『行番号』、開始位置を変数『文字位置』としてから、プログラムコードを考えてみましょう。」

Img7_4_21

ソンくん

「『読取行』を『1』、『最小列』を『3』として定数宣言、

 『最大列』・『Cm』・『最大文字数』・『文字位置』を整数型として変数宣言。

 『行番号』を長整数型として変数宣言。

 Const 読取行 = 1

 Const 最小列 = 3

 Dim 最大列 As Integer

 Dim Cm As Integer

 Dim 最大文字数 As Integer

 Dim 行番号 As Long

 Dim 文字位置 As Integerと記述します。


 先ず、Excelの1行目の文字が入っているセルの最大列を取得します。

 最大列 = Cells(1, Columns.Count).End(xlToLeft).Column

 

 それから、1行目のセルの値から最大文字数を取得します。

 その後、1文字目から最大文字数まで1文字ずつカウントアップしていきながら、

 そのつど1行目のセルの値を1文字ずつ読みとり、セル(行番号, Cm)に書きこみます。

 最大文字数 = Len(Cells(読取行, Cm).Value)

 

 For 文字位置 = 1 To 最大文字数

   行番号 = 文字位置 + 1

   Cells(行番号, Cm).Value _

    = Mid(Cells(読取行, Cm).Value, 文字位置, 1)

 Next 文字位置

 このプログラムコードの集まりを【ブロックC】とします。


 それから、Excelの最小列:『最小列』(3列目)から最大列:『最大列』(12列目)にかけて、

 各列の処理【ブロックC】ループ処理で実行します。


 For Cm = 最小列 To 最大列

   【ブロックC】

 Next Cm

 と記述します。」

Sub 最大列取得後_列ループ_1文字連続分解()

 Const 読取行 = 1

 Const 最小列 = 3

 Dim 最大列 As Integer

 Dim Cm As Integer

 Dim 最大文字数 As Integer

 Dim 行番号 As Long

 Dim 文字位置 As Integer

 

 最大列 = Cells(1, Columns.Count).End(xlToLeft).Column

 

 For Cm = 最小列 To 最大列

   最大文字数 = Len(Cells(読取行, Cm).Value)

   For 文字位置 = 1 To 最大文字数

     行番号 = 文字位置 + 1

     Cells(行番号, Cm).Value _

      = Mid(Cells(読取行, Cm).Value, 文字位置, 1)

   Next 文字位置

 Next Cm

End Sub

パイさん

「その通りです。それでは、そのマクロを実行してみましょう。」

Img7_4_23

ソンくん

「Excelの3列目(C列)から12列目(L列)にかけて、1行目のセルから取得した文字列を

 上端から下端まで順に1文字ずつ分解した文字が、2行目から13行目までのセルに順に書きこまれました。」


パイさん

「このように、Mid関数文字列のループ処理、更に、列のループ処理を組み合わせると、

 複数列の文字列を上端から下端まで順に1文字ずつ分解することができます。」



目 次

1. セルに文字を書きこむ
セルに文字を書きこむ

2. RangeとCellsでセルの位置を指定する
RangeとCellsでセルの位置を指定する

3. ループ処理でセルに値を書きこむ
ループ処理でセルに値を書きこむ

4. ループ処理でセルの値を読みとる
ループ処理でセルの値を読みとる

5. ループ処理でセルからセルへ値を代入する
ループ処理でセルからセルへ値を代入する

6. 条件分岐処理でセルの操作を分ける
条件分岐処理でセルの操作を分ける

7. 関数・プロパティ設定をつかう
関数・プロパティ設定をつかう

8. 他のレンジ/シート/ブックを更新する
他のレンジ/シート/ブックを更新する




YouTube

Excelマクロの実用版とデモ版


ブログ