-1

私のExcelファイルには次のものがあります:

    A     
1 10-30       
2 40-45      
3 30-80  

- で区切られた任意の範囲の数値を任意のセルに含めることができます。

特定の列 (任意のセルである可能性があります) で、最初から - ハイフンまでのすべてのテキストを削除したいと考えています。

例: 40-45 は 45 に置き換えられます。

以前にこの質問をしたことがあり、次の解決策を得ました

Sub Update()
Application.ScreenUpdating = False
Application.EnableEvents = False
    Dim ws As Worksheet, ur As Range, r As Range
    For Each ws In Sheet
        Set ur = ws.UsedRange
        For Each r In ur
            On Error Resume Next
                r = Split(r, "-")(1)
        Next
    Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

しかし、次のスクリプトを使用すると、すべてのワークシートが更新されます。選択したワークシートで更新し、J、K、L などの選択した列のみを更新したい (列)

この問題で私を助けてください。

4

3 に答える 3

0

すべてのワークシートで for ループを取り出し、現在のシートの使用部分全体ではなく、目的の列のみである範囲を選択する必要があります。それを行う基本的な方法:

Sub Update()
Application.ScreenUpdating = False 
Application.EnableEvents = False 
Dim ws As Worksheet, ur As Range, r As Range 
Set ws = ActiveSheet
Set ur = ws.Range(A:A) ' sets the range as a whole column with the chosen letter
For Each r In ur 
    On Error Resume Next 
        r = Split(r, "-")(1) 
Next 
Application.EnableEvents = True 
Application.ScreenUpdating = True
End Sub

コード内の A:A を必要な列に置き換えるだけです。たとえば、列 G の場合は G:G です。このコードを使用しているときに列をどのように選択するかによって異なります。

于 2013-09-26T11:42:12.743 に答える
0

これにより、置換がアクティブ シートの列JからLに制限されます。

Sub Update()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim ws As Worksheet, ur As Range, r As Range
Set ur = Range("J:L").Cells.SpecialCells(xlCellTypeConstants)
    For Each r In ur
        If InStr(1, r.Value, "-") > 0 Then
            r.Value = Split(r.Value, "-")(1)
        End If
    Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
于 2013-09-26T11:38:18.930 に答える