別のシートからデータを取り込んでいるシートに結合テーブルを作成しようとしています。連想すると、ソースデータシートでデータが変更された場合、そのデータは新しいシートに反映されます。私はまた、特定のユニークな価値を持つことを条件に新しいシートのテーブルを作成したいだけです。私の場合は、部品番号に関連する情報をプルアップする必要があります。元のソースデータには、同じ部品番号を含む多くの行がありますが、そのうちの1つを表示するだけです。一意の識別子の関連テーブルを作成する
これは私がこれまで持っているものです。
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
Dim ref() As Variant
Dim row As Integer
row = 92
Worksheets("Part Tracking Scorecard").Activate
While Cells(row, 6).Value:
If IsInArray(Cells(row, 6).Value, ref) Then
row = row + 1
ElseIf Not IsInArray(Cells(row, 6).Value, ref) Then
ReDim Preserve ref(1 To UBound(ref) + 1) As Variant
ref(UBound(ref)) = Cells(row, 6).Value
Worksheets("Unique Parts").Activate
?????
row = row + 1
だけのユニークな部品番号を披露する私の条件を満足するために、私は「REF」と呼ばれる空の配列を初期化します。次に、ソースシートを反復する際に、部品番号が関数 "IsInArray"でrefになっているかどうかを確認します。その中にあれば、空の配列に部品番号を追加していない場合は次の行に移動し、次の行に移動します。
"????"私は私の問題の大部分を把握しようとしているところです。その部分は、私がユニークな部品番号からの日付で新しいテーブルを作る場所であるはずです。私ができる非常に単純で退屈なことは、行の列を実行してvlookup関数を実行するループを作ることです。これを行う際にもっと頑強でよりエレガントな方法があるのだろうかと思っていました。
これは私にとって正しい方向に向かっているようです。 else関数は、行データに新しいシートと過去のデータに切り替える場所です。 ref2配列をコピーして新しいシートに貼り付けるのではなく、ソースから自動的にライブフィードを得ることができますか? EDIT:ref2は、ユニークな部分をフィルタリングするのに役立つ構造にすぎませんか? –
新しいシートに貼り付けることができるforループを追加しました。これは、私がそれをテストすることに慣れていないので、ちょっとしたピンチが必要かもしれません。配列の再配置が必要な場合は、新しいシートに値をエクスポートする前にref2で簡単に行うことができます。 自動ライブフィードの場合、ソースシートに変更が適用されるたびに、このコードを記述したサブフォルダを呼び出す必要があります。これらの変更が発生した瞬間を探し、その時点でこのサブメニューを呼び出して、新しいシートに変更を適用してください。 – Diveye
コードを使いこなした後、インデックス用のforループを修正して一意の値を見つける方法が不思議でした。データを配列に配置すると、2D配列になります。これで、元の値をref1に設定すると、値のインデックス座標が変わる可能性があります。私は、ref1を反復するためのパラメータを実際に作成する方法を失っています。 –