目標は基本的にルックアップ値を持つ2番目のワークシート(CalcValues)を持つことです(fieldA = x、fieldB = y、fieldC = z、value = a )。ExcelでVBAと一致する値に基づいて別のシートからデータを取得
私は(私はVBAでは動作しませんので、これは間違っている可能性があります)持っているもののスケルトン:
Dim calcArray
calcArray = Array(FIELDA, FIELDB, FIELDC, FIELDD, FIELDE)
If calcArray.Contains(Target.Column) Then
Dim fieldAVal, fieldBVal, fieldCVal, fieldDVal, fieldEVal
fieldAVal = Target.Worksheet.Cells(Target.Row, FIELDA)
...
fieldEVal = Target.Worksheet.Cells(Target.Row, FIELDE)
End If
FIELDA-Eは、ルックアップフィールドの列インデックスされている状態で。
ない機能が、目標は少し、私はExcelのVBAから何か知っていることで混入した擬似C#のエンティティフレームワークの中で、私はこれらのフィールドのいずれかを設定する場合は、チェックが行われることである。
var data = Worksheets("CalcValues").Where(c => c.ColumnA == fieldAVal);
data = data.Where(c => c.ColumnB == fieldBVal);
...
data = data.Where(c => c.ColumnE == fieldEVal);
' Ideally, grabbing a row number from data. Or row itself, either or.
' with GRABBED_ROW = the last remaining 'data' object's row number, provided one exists.
Target.Worksheet.Cells(Target.Row, UPDATEDFIELDA) = Worksheet("CalcValues").Cells(GRABBED_ROW, UPDATEDFIELDAINDEX);
Target.Worksheet.Cells(Target.Row, UPDATEDFIELDB) = Worksheet("CalcValues").Cells(GRABBED_ROW, UPDATEDFIELDBINDEX);
...
を問題はどのように私はvarデータのフィルタリングを達成するのですか?data = data.Where(c => c.ColumnE == fieldEVal);私は疑似コード化セクション?
編集:私はいくつかのレビューをしていますが、私の最善の策は何とかC#のリストに似たダイナミックな配列を持ち、Application.WorkSheet.Matchを使用してそこに到達する?
EDIT2:さて、私はそれを更新(その最も可能性の高い意思を見ての外側に第二項を無視することができます)、私は、コードかどうか分からない(焼成されていません)正しい:
For i = 1 To Worksheet("CalcValues").ListRows.Count
If (Worksheet("CalcValues").Cells(i, 1).Value = fieldAVal And Worksheet("CalcValues").Cells(i, 2).Value = fieldBVal And Worksheet("CalcValues").Cells(i, 3).Value = fieldCVal And Worksheet("CalcValues").Cells(i, 4).Value = fieldDVal And Worksheet("CalcValues").Cells(i, 5).Value = fieldEVal) Then
If (Worksheet("CalcValues").Cells(i, 6).Value = "Column A") Then
Target.Worksheet.Cells(Target.Row, COLUMNA).Value = Worksheet("CalcValues").Cells(i, 7).Value
ElseIf (Worksheet("CalcValues").Cells(i, 6).Value = "Column B") Then
Target.Worksheet.Cells(Target.Row, COLUMNB).Value = Worksheet("CalcValues").Cells(i, 7).Value
End If
End If
Next
...質問は何ですか? – jmoon
良い点。 2番目のセクションの後に余分な行が追加され、明示的に質問されました。 – Robert