2016-07-17 6 views
0

最初の質問はここになります。

私はループを作成してテーブル内の行を操作し、それぞれの列のセル値を宣言された変数に割り当てようとしています。 名前付き範囲入力セルの論理ステートメントと計算でこれらの変数を使用し、出力をワークシートに転送して、ピボット・テーブルの基礎を形成することを計画します。

私が使用しているレガシーワークブックテンプレートには、名前の範囲のないvlookup、if文などのヒープがありました。それは乱雑で誰かが数式を壊した列/行を挿入しています。

私は何年か前にMSAccessのクエリとvbaに似たようなことをしていましたが、それ以来、vbaとnoneを実行していません。

これまでのところ、それMSDNの参照に加えて、私は、次の役に立つ https://stackoverflow.com/a/21490552https://stackoverflow.com/a/12497229/6598860テーブル内の行をループし、名前付き変数にセル値を割り当てます

'Declare variables 
Dim Var1 As String 'To store Value from Table Column "Col1" 
Dim Var2 As String 'To store Value from Table Column "Col2" 
Dim Var3 As Variant 'To Store Value from Table Column "Date" 
Dim SD As String 'To Store Value from Named Input Cell "StartDate" 
Dim ED As String 'To Store Value from Named Input Cell "EndDate" 
Dim counter As Integer 'Counter for pasting to row in worksheet "Dump" 

'Set Date Range 
SD = Range("StartDate").Value 
ED = Range("EndDate").Value 

'Set Counter 
counter = 1 

'Loop through rows in table "tblMyData"on Worksheet "Data" and 
'assign values to variables (this bit is breaking down) 
Dim lo As Excel.ListObject 
Dim lr As Excel.ListRow 
Set lo = Worksheets("Data").ListObjects("tblMyData") 
For Each lr In lo.ListRows 
    Var1 = Range(lr.Range, lo.ListColumns("Col1").Range).Value 
    Var2 = Range(lr.Range, lo.ListColumns("Col2").Range).Value 
    Var3 = Range(lr.Range, lo.ListColumns("Date").Range).Value 

    'Logic Statement e.g. 
    If SD > Var3 > ED Then 
     Worksheets("Dump").Activate 
     Cells(counter, 1).Value = Var1 * Var2 
     Cells(counter, 2).Value = Var3 
    Else 

    End If 
Next 

を発見した私は、より説明的なもので変数名と列名を交換されますが、うまくいけば、これは私が何を示しています達成しようとしている。 何か助けやアドバイスをいただければ幸いです。 おかげ

+1

「分解する」とは何ですか?コンパイルエラーまたはランタイムエラー?予想外の結果ですか? –

+0

コンパイルエラーと予期しない結果がありました。 Var1 AS文字列を使用したときに、実行時エラー '13'が発生しました:型が一致しません と "Var1 = Range(lr.Range、lo.ListColumns(" Col1 ")。Range).Value" – damnthing

+0

申し訳ありません:エラーと予想外の結果。 Var1 AS文字列を使用しましたが、実行時エラー '13'がありました。タイプが一致しません と "Var1 = Range(lr.Range、lo.ListColumns(" Col1 ")。範囲).Value" がデバッグ中にハイライトされました Var1をVariantに変更しようとしました。その結果、表の最初の列ヘッダーの値が宛先ワークシートに(繰り返し)貼り付けられました。コードの名前が "Col1"であるにもかかわらず、実際にはテーブルの最初の列ではなく、変数Var1に渡すデータの各行の値を探しています。 – damnthing

答えて

2

変更

Range(lr.Range, lo.ListColumns("Col1").Range).Value

Intersect(lr.Range, lo.ListColumns("Col1").Range).Value

これは、私が列と行の交差点で単一のセルを参照する方法です。

0

これが唯一のエラーであれば、私はわからないが、私は以下のコード片でのIF下を交換することになります。

'Logic Statement e.g. 
If SD > Var3 And Var3 > ED Then 
    With Worksheets("Dump") 
     .Cells(counter, 1).Value = Var1 * Var2 
     .Cells(counter, 2).Value = Var3 
    End With 
Else 
    'if you are not doing anything with the Else you can just remove it 
End If 
+0

コメントありがとうございました。もし私がそれを使い終わらなければ、私はそれを取り除くでしょう。 – damnthing

関連する問題