2017-10-31 8 views
0

私は数字からユニットを保持する単語からインポートされたレポートを持っています。私はfind/replaceを使うことができましたが、同様のレポートを頻繁にインポートする必要があり、セル内の数値を保持しながらユニットのすべてのインスタンスを削除したいと考えています。輸入される単位は200平方フィートです。毎回番号が変わりますが、ユニット間のスペースを含むユニットは同じです。セルから文字列を削除して、そのセルに番号を残してください

Sub DeleteChar() 
Dim lastrow as integer 
Dim myCell as Range 
lastrow = Cells(Rows.Count, 2).End(xlUp).Row  
    For y= 3 to 10 
     For x = lastrow to 2 step -10 
      If Right(Len(myCell.Value),7) = " sq.ft." then 
      myCell.Value = Left(myCell.Value, len(myCell.Value-7)) 
      end if 
     Next x 
    Next y 
End Sub 

が必要です。 "sq.ft."にするために、最初の7文字のインスタンスを見つけるように設定しようとしました。次に、そのセルを同じ値(最後の7文字)に置き換えます。

+0

ここに質問がありますか?エラーが発生していますか? – Fred

+0

オブジェクト変数に関連する実行時エラー91が発生しました – Justin

答えて

1

あなた番号は常にヴァルを使用し、テキストの左側いる場合:

だからではなく、あなたの場合で:

 If Right(Len(myCell.Value),7) = " sq.ft." then 
     myCell.Value = Left(myCell.Value, len(myCell.Value-7)) 
     end if 

使用

ActiveSheet.Cells(x,y).value = Val(ActiveSheet.Cells(x,y).value) 
0
Sub DeleteChar() 
Dim i, lastrow As Integer 
Dim myCell As Range 
Dim arr() As String 
lastrow = Cells(Rows.Count, 2).End(xlUp).Row 

For i = 1 To lastrow 
    arr = Split(Cells(i, 2).Value, " ") 
    Cells(i, 2).Value = cDbl(arr()) 
Next i 
End Sub 

あなたなら、私を知ってみましょうデータの入力がデリミタと矛盾する場合、このコードは空白文字を探しますので、レコード区切り文字は含まれません。

+0

ありがとうございます、実行時エラー '9'が表示されます。下付き文字は範囲外です。次に、列D、G、J(すべてのインスタンスが表示される)にのみ適合するように少し調整し、列Dに対してはうまく動作しますが、行Cell(i、4)に関連するランタイムエラーが表示されます。 = arr(0)。 GとJの後は走りません。 – Justin

+1

arr(0)の引数をarr()に変更すると、必要な列のすべての単位が削除されますが、数値ではなくテキストであるとみなされます。私はこの問題を次のスクリプトで修正しました。今すぐ変換していただき、ありがとうございます。 [D:D] – Justin

+0

で選択 \t \t .NumberFormat = "一般" \t \t .Valueの= .Valueの \t端と.Select \tそれはそれにそれを包む、ARR()ので、文字列として定義されていることを行いますcDbl演算子を使用してdouble(数値)に変換します。私はそれに応じて私の答えを編集し、それがあなたのために働くかどうかを教えてください。 –

関連する問題