2017-07-31 6 views
1

強制的な値を1つずつ取り出すことを試みている2つのシートがあります。 Force Cで始まり、すべての値をカウントダウンして取り込んでいるセルについて、C列を検索しています。任意の文字列セルをスキップしたり、反復をジャンプするVBA一致/インデックス関数

私が取り組んでいる問題は、現在取り込んでいるシートには、セルの中央にランダムな文字列値があることです。これはFemapというプログラムによって生成され、テキストを制御することはできません。 ここから私が引き出しているものの例です。

ELEMENT-ID FORCE-X 
38789 1.06E+00 
38795 2.49E+00 
38801 2.30E+00 
38807 2.21E+00 
38813 2.15E+00 
38819 1.90E+00 
38825 1.57E+00 
38827 -8.43E-01 
38833 3.92E+00 
38839 1.51E+01 
38845 1.68E+01 
38851 1.19E+01 
38857 9.22E+00 
38863 2.84E+00 

**CBUSH-CRITS JULY 
CONSTRAINT SET 
SUBCASE 1 

F O** 

ELEMENT-ID FORCE-X 
39721 8.80E+00 
39727 6.02E+00 
39733 1.44E+00 

問題の領域は太字で示しています。私のセルは、7月、Constraint Setなどの値を持つことになります。どのような文字列でセルをスキップして、インデックス検索がForce-Xの1回の反復からForce-Xの次の反復までの値を取得するだけです。

Dim mrsheet As Worksheet 

Set mrsheet = ThisWorkbook.Sheets("PPO") 



''''''''''''''''''''''''''''''''''''' 
n = 2 
Count = 1 
m = 1 
numcbush = 138 
i = 1 


While m <= numcbush 


If Sheets("F06").Cells(i, 2) = mrsheet.Cells(n, 1) Then 

    mrsheet.Cells(n, 12) = Application.WorksheetFunction.Index(Sheets("F06").Range("C:C"), Application.WorksheetFunction.Match("FORCE-X", Sheets("F06").Range("C:C"), 0) + Count) 

     m = m + 1 
     n = n + 1 
     Count = Count + 1 
     i = i + 1 

Else 


i = i + 1 

End If 



Wend 

答えて

0

プロシージャを開始する前に、まずこのマクロのようなデータを消去してみてください。 バックアップを取ることを確認してください。これで行が削除されます。

Sub CleanupData() 
Dim aCell As Range 

StartClean: 
For Each aCell In Intersect(ActiveSheet.UsedRange, ActiveSheet.Range("C:C")).Cells 

If IsNumeric(aCell) Or InStr(1, UCase(aCell.Text), "FORCE-X") > 0 Or IsEmpty(aCell) Then 
    'do nothing 
Else 
    aCell.EntireRow.Delete 
    GoTo StartClean 
End If 

Next 

End Sub 
+0

これがうまくいく場合、答えを受け入れてください。申し訳ありませんが、あなたがこれを知っている場合は、新しいユーザーの外観を持っています。 :) – PGCodeRider

関連する問題