2016-09-18 5 views
-1

こんにちは、私はVBAの初心者です。 私はいくつかのことをする必要がありますが、どうやってそれを行うのか分かりません。VBA excel Replace

1)まず、私が(ドットにカンマ(、)を変換する必要があります。)

2)列に2 Iたく数ドット

3前)のセルに文字Iのwannaである場合例えばファイルと私のコードを(アップロード例えば細胞(I、13)0.b1 I以下= 0 + 1 = 1又は3.C = 3 + 1 = 4

の番号+1

に変更動作しません)
エラー:StatementがTypeブロック外で無効です。

http://www.wyslij-plik.pl/pokaz/906005---kgkx.html

Excel view

Sub change() 

Dim i As Integer 
Dim dot As String 


i = 2 
While Cells(i, 1) <> "" 

dot = Cells(i, 1) 
dot = Replace(dot, ",", ".") 

If InStr(Cells(i, 1), ".") Then 
Cells(i, 2) = Left(Cells(i, 1), 2) ' i wanna only the number before the dot 

End If 

If IsNumeric(Cells(i, 1)) = False Then 
Cells(i, 2) = Cells(i, 1) + 1 

End If 
    'If in the cells is a letter i wanna change it to number +1 
for example cells (i,13) 0.b1= 0 + 1 = 1 or 3.c = 3+ 1 = 4 

i = i + 1 
Wend 
End Sub 
+0

あなたの要求は明確ではありません。前にExcelシートのサンプルを追加し、達成したい結果(わずか1〜2行)を手作業で書きます。 –

+0

はい、それは私の最初の一日です今、私はExcelシートをアップロードする方法を見て、あなたは私を助けることができますか? – Konrad

+1

また、「うまくいかない」のではなく、うまくいかないもの、入手するもの、期待するものについては、https://stackoverflow.com/help/how-to-askを参照してください。ここにファイルをアップロードすることはできません。画像だけです。 – Slai

答えて

1

あなたは、列BにA列をコピーしているVBAなしで列に[データ]> [テキストを解決することができ、この

Sub change()  
    Dim i As Integer, s As String, a() As String, cell As Range 

    Set cell = [A2] 
    While cell > "" 
     s = Replace(cell, ",", ".") 
     a = Split(s, ".") 
     i = a(0) 
     If UBound(a) > 0 Then 
      If a(1) Like "[a-zA-Z]*" Then i = i + 1 
     End If 
     cell(, 2) = i  ' the cell on its right 
     Set cell = cell(2) ' the cell below it 
    Wend  
End Sub 

のようなもの>カンマをチェックおよびその他:.を入力した後、D2でこの式を使用できます。

= B2 + Not(IsNumber(C2)) 
+0

もしUBound(a)> 0なら、それはまったく大丈夫ですか?私は文法エラー – Konrad

+0

を持っていたので、 'UBound(a)> 0 Then'を返します。 – Slai

+0

私はあなたの答えから何かを学んだので、私はちょっと話題になっています:' [A2] 'は同じです'Range(" A2 ")'と 'cell(2)'は 'cell.Offset(1,0)'と同じです。それですか?これはすばらしいことです。 –