2016-10-18 7 views
1

カラムを連結するロジックを適用する前に、カラムEをテキストフォーマットに変換したいと考えました。マクロを使用して数値をテキストに変換するにはどうすればよいですか?

現在、列Eにはテキストと数値の両方があります。

既存のコードは:

Private Sub CommandButton1_Click() 
Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
Dim lrw As Integer 
Dim rgn As Range 
Dim x As Integer 
Dim str As String 


lrw = ActiveSheet().Range("A1").End(xlDown).Row 
Set rgn = Range("A1:E" & lrw) 
rgn.Select 
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2:A100000") _ 
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers '1th order by ID 
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2:C100000") _ 
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal  '2th order by date 
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("D2:D100000") _ 
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers '3th order by Counter 

With ActiveWorkbook.Worksheets("Sheet1").Sort 
    .SetRange rgn 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 

    .Apply 
End With 
    For i = 2 To lrw 
     x = Application.WorksheetFunction.CountIfs(Worksheets("Sheet1").Range("E2:E" & lrw), "*", Worksheets("Sheet1").Range("A2:A" & lrw), Cells(i, 1), Worksheets("Sheet1").Range("C2:C" & lrw), Cells(i, 3)) 
     If x > 1 Then 

      cmnts = CStr(Cells(i, 5)) 
      For J = 1 To x - 1 
      cmnts = cmnts & " " & CStr(Cells(i + J, 5)) 
      Rows(i + J).Select 
      Selection.ClearContents 
      Next J 
      Cells(i, 5) = cmnts 
     End If 
    Next i 
With ActiveWorkbook.Worksheets("Sheet1").Sort 
    .SetRange rgn 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
Application.ScreenUpdating = True 
Application.Calculation = xlCalculationAutomatic 

End Sub 

は、私が列を連結するためのロジックを適用する前にテキスト形式にE列を変換したかったです。

答えて

1

は、私は私の既存のコードの上の部分を含める必要があります。この

Sub Example() 
    With ActiveWorkbook.Worksheets("Sheet1").Range("E:E") 
     .NumberFormat = "@" 
    End With 
End Sub 
+0

を試してみてください? –

+1

@AnnieJebaの前に 'lrw = ActiveSheet()。Range(" A1 ")。End(xlDown).Row' – 0m3r

+1

完璧に動作します:) –

関連する問題