Excel・マクロ

並べ替え  スペース取り除き
 文字列のスペースを取り除くには、Trim関数を使います、この関数を使うと文字列の左右にあるスペースを取り除きます。
文字列の右のスペースを取り除くには、RTrim関数を使い、文字列の左のスペースを取り除くには、LTrim関数を使います。
文字列のすべてのスペースを取り除く時には、Replace関数を使用します。
また、ワークシートのTrim関数を使うと、文字列の左右のスペースを取り除き、文字列中に連続したスペースがある場合、
連続したスペースを1個のスペースにしてくれます。

マクロプログラム実行前の準備:
 Excelを起動し、Sheet1のB列に下図の値を設定します。
 ItemStringLen
 次のテストデータを、テキストエディタを使い、コピー&ペーストして、適当な名前を付け、拡張子は、.txtにして保存してください。

012-1234 銀河市地球区日本136番地        独立行政法人    国立パソコン修理屋機構         名無  権平    副塾長     修理特科      
012-1234 銀河市地球区日本136番地        独立行政法人    国立パソコン修理屋機構         名無  権平    副塾長     修理特科      
012-1234 銀河市地球区日本136番地        独立行政法人    国立パソコン修理屋機構         名無  権平    副塾長     修理特科      
012-1234 銀河市地球区日本136番地        独立行政法人    国立パソコン修理屋機構         名無  権平    副塾長     修理特科      
012-1234 銀河市地球区日本136番地        独立行政法人    国立パソコン修理屋機構         名無  権平    副塾長     修理特科      
				
次に、下記マクロプログラムをコピーして、Excel2000/2003の場合には、”ツール”の”マクロ”の”Visual Basic Editor”を選択して開き、
ペーストして、実行です。
Excel2007以降では、メニューに”開発”を追加して、"開発"→”Visual Basic”を選択して開き、ペーストして、実行です。


' main pro
Option Explicit
Dim itemNo As Integer

Dim MagNo As Integer

Dim wlen As Integer

Dim endrow As Integer

Dim wbuf As String
Dim mbuf(70) As String
Dim stbt As Double
Dim stlng As Double

Dim txlen As Integer

Dim txdev As String
Dim txfilename As String
Dim txdata As String
Dim FileExist As String

Dim txbookname As String


Sub main()

    txbookname = Application.GetOpenFilename(, , , , False)
    If txbookname = "False" Then Exit Sub
    txlen = Len(txbookname)
    txlen = txlen - 4

    txdev = Mid(txbookname, 1, txlen)
    txfilename = txdev + "01.txt"

    Open txbookname For Input As #1
    Open txfilename For Output As #2
    
    Line Input #1, wbuf
    Print #2, "***** 処理前の文字列 *****"
    Print #2, wbuf

    MagNo = 0
    Sheets(1).Activate
    
    Seek #1, 1
    Do Until EOF(1)
        clmbuf
        Line Input #1, wbuf
        wlen = Len(wbuf)
        txdata = ""
        stbt = 1
        For itemNo = 1 To 6
            stlng = Cells(itemNo, 2)
            mbuf(itemNo) = Mid(wbuf, stbt, stlng)
            stbt = stbt + stlng
            sptori (MagNo)                             'スペース取除き処理
        Next itemNo

        Select Case MagNo
            Case Is = 0
                Print #2, vbCrLf & vbCrLf & "文字列の左右、文中(文中の連続したスペースを、1個にする)のスペース取除き処理"
            Case Is = 1
                Print #2, vbCrLf & vbCrLf & "文字列のすべて(左右、文中)のスペースを取り除く"
            Case Is = 2
                Print #2, vbCrLf & vbCrLf & "文字列の左右のスペース取除き処理"
            Case Is = 3
                Print #2, vbCrLf & vbCrLf & "文字列の左側のスペース取除き処理"
            Case Is = 4
                Print #2, vbCrLf & vbCrLf & "文字列の右側のスペース取除き処理"
        End Select

        For itemNo = 1 To 5
            txdata = txdata & mbuf(itemNo) & ","
        Next itemNo

        txdata = txdata & mbuf(6)

        Print #2, txdata

        MagNo = MagNo + 1

    Loop
      
    Close #1
    Close #2

errproc:

End Sub

Sub clmbuf()

    For itemNo = 1 To 70
        mbuf(itemNo) = ""
    Next
    
End Sub
Sub sptori(MagNo)

    Select Case MagNo
        Case Is = 0                '文字列の左右、文中(文中の連続したスペースを、1個にする)のスペース取除き処理
            mbuf(itemNo) = Application.WorksheetFunction.Trim(mbuf(itemNo))
        Case Is = 1                '文字列のすべて(左右、文中)のスペースを取り除く
            mbuf(itemNo) = Replace(Replace(mbuf(itemNo), " ", ""), " ", "")
        Case Is = 2                '文字列の左右のスペース取除き処理
            mbuf(itemNo) = Trim(mbuf(itemNo))
        Case Is = 3                '文字列の左側のスペース取除き処理
            mbuf(itemNo) = LTrim(mbuf(itemNo))
        Case Is = 4                '文字列の右側のスペース取除き処理
            mbuf(itemNo) = RTrim(mbuf(itemNo))
    End Select

End Sub
				

Copyright ©2011 Uncletel's パソコン備忘録 All Rights Reserved.
正当なCSSです!
このページは正当なCSSです。