2011-11-28 16 views
1

Excelでテキストとハイフンを右に削除します。ハイフンの後にテキストを削除する

マイ列例:

Fresh Start Recovery, Inc. - Wayne 
FSA Property Mgmt - Danny 
Georgia Securing Svcs, Inc. - Katrina 
Georgia - SFFS - Joe & Roxana 
Greenwood - Lonnie 
Griffis Recovery, LLC - Tyler (5% WC) 
Hi Cap, Inc. - Doug 

私はこのように見て、それを必要とする:

Fresh Start Recovery, Inc. 
FSA Property Mgmt 
Georgia Securing Svcs, Inc. 
Georgia - SFFS 
Greenwood 
Griffis Recovery, LLC 
Hi Cap, Inc. 

私は右側のテキストやハイフンを削除するコードを持っているが、私は2つを持っている場合ハイフン私は2番目のものを削除するために必要な、私のコードは、最初のものを削除します。

Dim iPos As String 
Dim c As Range 

For Each c In Range("a1:a" & Range("a" & Rows.Count).End(xlUp).Row) 
iPos = InStr(1, c.Value, " - ") 
If iPos > 0 Then 
c.Value = Left(c.Value, iPos - 1) 
End If 
Next 
End Sub 

答えて

1

InStrRev後方見ることで最後の文字列の一致を見つけます。 「 - 」最後発生

  • の位置を見つけるためにInStrRevを使用する文字列関数を使用

    この更新されたコード

    • 範囲がため
    • テストループではなく、速度のための変異配列を使用しますLeft$ではなく、バリアントLeft

      Sub Test() 
      Dim rng1 As Range 
      Dim X 
      Dim lngrow As Long 
      Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp)) 
      X = rng1.Value2 
      For lngrow = 1 To UBound(X) 
      If InStr(X(lngrow, 1), " -") Then X(lngrow, 1) = Left$(X(lngrow, 1), InStrRev(X(lngrow, 1), " -", , vbBinaryCompare) - 1) 
      Next 
      rng1.Value2 = X 
      End Sub 
      
  • +0

    これは完璧に機能しました!おかげさまで、私は数日間この作業を続けてきました。 – user1013478

    0

    InStrの代わりにInStrRevを使用

    関連する問題