2016-03-25 9 views
3

Iは式適用ている:B10それぞれ:B2の範囲に結果を書き込む、A10:範囲A2内のすべてのセルに数式内の範囲を動的に変更するにはどうすればよいですか?

=(SUBSTITUTE((LEFT(A2;(FIND("htt";A2;1))-3));";";";"))&RIGHT(A2;(LEN(A2)-(FIND("htt";A2;1))+3)) 

:式の enter image description here

テキスト表現。これを行うには

私は、次のマクロを使用します。

Sub ColumnsFormat() 
    Dim s As String 
    Dim i As Integer, j As Integer 
    'Set wb = Workbooks("CSV_File.xlsm") 
    Application.ScreenUpdating = False 
    j = 1 

    For i = 2 To 10 
     s = "=(SUBSTITUTE((LEFT(R[" & Trim(Str(i)) & "]C[" & Trim(Str(j - 2)) & "],(FIND(""htt"",R[" & Trim(Str(i)) & "]C[" & Trim(Str(j - 2)) & "],1))-3)),"","","";""))&RIGHT(R[" & Trim(Str(i)) & "]C[" & Trim(Str(j - 2)) & "],(LEN(R[" & Trim(Str(i)) & "]C[" & Trim(Str(j - 2)) & "])-(FIND(""htt"",R[" & Trim(Str(i)) & "]C[" & Trim(Str(j - 2)) & "],1))+3))" 
     Sheets("Sheet1").Cells(i, 2).Value = s 
    Next i 
End Sub 

問題は、何らかの理由でForサイクル内の式の内部行番号が間違っているということです。 A2を取る代わりに。 A3; A4 ... A10セル(毎回行番号を1ずつ変更)、マクロはA2を通過します。 A4; A6など(行番号を2ずつ増やします)。

私は間違っていますか?

答えて

1

数式の行を0に変更すると、コードは正常に動作します。私は問題は、あなたの数式では、数式がその後に適用された特定のセルに対して行が計算されたことです。したがって、B2の公式はA(2 + 2)を、B3はA(3 + 3)を見ました。

Sub ColumnsFormat() 

Dim s As String 
Dim i As Integer, j As Integer 
'Set wb = Workbooks("CSV_File.xlsm") 
Application.ScreenUpdating = False 
j = 1 

For i = 2 To 10 
    s = "=(SUBSTITUTE((LEFT(R[" & 0 & "]C[" & j - 2 & "],(FIND(""htt"",R[" & 0 & "]C[" & Trim(Str(j - 2)) & "],1))-3)),"","","";""))&RIGHT(R[" & 0 & "]C[" & Trim(Str(j - 2)) & "],(LEN(R[" & 0 & "]C[" & Trim(Str(j - 2)) & "])-(FIND(""htt"",R[" & 0 & "]C[" & Trim(Str(j - 2)) & "],1))+3))" 
    Sheets("Sheet1").Cells(i, 2).Value = s 
Next i 

End Sub 
+0

はい、あなたは正しいです。どうもありがとう! – Ale

関連する問題