2017-07-20 11 views
1

私は失われた番号ごとに行を挿入したいと思っています。たとえば、私は "35C-1412-K01"と "35C-1421"を持っています。考えられるのは、1412から1421の間のすべての欠落した番号に対して行を追加することです。しかし、これまで私が使用したコードは機能しませんこれは、コードがセル内の最後の5文字を​​比較し、そのセルの中間の数字をさらに調べているためです。私の考えは、おそらく "MID"プロパティではなく "RIGHT"プロパティを使用することですが、実装には問題があります。最初の " - "、つまり "35TC-1411"の前に3文字以上あるセルもあるので、コードが3文字しかない場合は、コードを削除する可能性があります。これの助けがあれば大歓迎です。私は上記参照失われた番号ごとに行を挿入する

コード:

Option Explicit 
Sub InsertNullTest() 
Dim i As Long, gap As Long 
Dim WorkRng As Range 

On Error Resume Next 
Set WorkRng = Application.InputBox(Prompt:="Range To Check", Title:="Select a Range", Default:=Selection.Address, Type:=8) 
On Error GoTo 0 
If WorkRng Is Nothing Then Exit Sub '<--| check user hasn't canceled the dialog box 
With WorkRng 
    For i = .Rows.Count To 2 Step -1 
     gap = Right(.Cells(i), 5) - Right(.Cells(i - 1), 5) 
     If gap > 1 Then .Cells(i).Resize(gap - 1).Insert xlDown 
    Next 
End With 
End Sub 

答えて

1

あなたはスプリットを使用することができます。このコードは、文字列の最初と3番目の要素が定数であることを前提としています。

Sub InsertNullTest() 

Dim i As Long, v1, v2, j As Long 
Dim WorkRng As Range 

On Error Resume Next 
Set WorkRng = Application.InputBox(Prompt:="Range To Check", Title:="Select a Range", Default:=Selection.Address, Type:=8) 
On Error GoTo 0 
If WorkRng Is Nothing Then Exit Sub '<--| check user hasn't canceled the dialog box 

With WorkRng 
    For i = .Rows.Count To 2 Step -1 
     v1 = Split(.Cells(i), "-") 
     v2 = Split(.Cells(i - 1), "-") 
     If Val(v1(1) - v2(1)) > 1 Then 
      .Cells(i).Resize(Val(v1(1) - v2(1)) - 1).Insert xlDown 
      For j = 1 To Val(v1(1) - v2(1)) - 1 
       .Cells(i - 1).Offset(j) = v2(0) & "-" & Val(v2(1)) + j & "-" & v2(2) 
      Next j 
     End If 
    Next 
End With 

End Sub 
+0

タグ番号の数値を見るだけの方法はありますか?私はちょうど、 "35E-1401AK"の後ろに "35E-1408"のようなタグが入っていることに気付きました。これらの2つのタグに対してコードを実行すると、挿入された行を取得する必要がありますが、エラーが発生します。それ以外の場合は動作しているようです –

+0

Splitを読んだら、あなたはそれを試してみましょう。 35C-1412-K01の元の例では、v1(0)= 35C、v1(1)= 1412、v(2)= K01です。これは、指定した区切り文字に配列分割を返します。だから、ハイフンが1つしかないとエラーになります。 – SJR

+0

ありがとうございました! –

関連する問題