EXCEL超初心者マクロ(10)
項目の位置を特定する(ヘダーある時)

SAMPLE付

このマクロは、ヘダーの項目の位置が固定じゃない時、ヘダーを読んで位置を確定して、一番最後に分割して展開するものです。
管理ツール等で抽出する際に変わってしまう事があると要望にあったので作成しました。

分割は、数が固定ではないため、SplitUBoundを使ってコントロールしています。

※各項目の宣言は、module1の上のほう、Option Explicitに書いてます。
Public xxxxxx as Long 等

SAMPLE12.zip

    MSG_FLG = MsgBox(" 処理コード分割実行OK? ", vbYesNo)
    If MSG_FLG = vbNo Then
       Exit Sub
    End If

    mySheetName001 = "csvin"

'  ***クリア処理***
   '### シートフィルタ解除サブプロシジー ###
    sheet_clear
    
   '### ヘダー位置検索
    CNT01 = 0
    Set set_data01 = Worksheets(mySheetName001).Range("A1")
    Do Until set_data01.Offset(0, CNT01).value = "" Or _
             set_data01.Offset(0, CNT01).value = "処理コード1"
       If set_data01.Offset(0, CNT01).value = "処理コード" Then 'ISBN
          CNT02 = CNT01
       End If
       CNT01 = CNT01 + 1
    Loop
    
    set_data01.Offset(0, CNT01).value = "処理コード1"
    set_data01.Offset(0, CNT01 + 1).value = "処理コード2"
    set_data01.Offset(0, CNT01 + 2).value = "処理コード3"
    set_data01.Offset(0, CNT01 + 3).value = "処理コード4"
    set_data01.Offset(0, CNT01 + 4).value = "処理コード5"
    set_data01.Offset(0, CNT01 + 5).value = "処理コード6"
    Set set_data01 = set_data01.Offset(1, 0)
    
    Do Until set_data01.Offset(0, 1).value = ""
        
      '### MEISAI
       VWORK01 = Split(set_data01.Offset(0, CNT02).value, "/") '### 処理コード
       CNT03 = UBound(VWORK01) '### 分割数
       
       For CNT04 = 0 To CNT03 '### CNT04を0から分割数まで回します。
           set_data01.Offset(0, CNT01 + CNT04).value = VWORK01(CNT04) '###
       Next CNT04
        
        Set set_data01 = set_data01.Offset(1, 0)
        
    Loop
    
    Sheets(mySheetName001).Select
    Range("A1").Select
    
    MSG_FLG = MsgBox(" 処理END(^^) ")
    

SAMPLE付

Posted by master