2016-05-22 10 views
0

私のコードを成功させるために何時間も費やされました。Vlookup、For Next、ツリー変数

私は2つの条件の関数でvlookupの結果を合計しようとしています。

任意のレベルのユーザーによる入力値が0より大きく、すべてのvlookup値のパイプ番号と合計に対応する入力値での "vlookup"と異なる場合。

基本的に、演習の目的は、以前にあったパイプ番号を入力し、列EYに関連する圧力を合計することです。したがって、私のポンプを設計するために私のネットワーク内で最も汚れていないパイプが何であるかを知ることができます。

これはあまり明確ではありませんが、私のファイルのリンクを理解してください。

説明を躊躇しないでください。

私に提供できる助けをたくさんいただきありがとうございます。

が素敵な一日をここで

は、ファイルをダウンロードするためのリンクです:

https://www.dropbox.com/s/zcfw9ybeds082qa/Help.xlsx?dl=0

Sub test() 
Dim y As Integer, total As Integer 
total = 0 
For y = 3 To 152 
If Not Cells(8, y).Value = 0 And Cells(8, y).Value = "" Then 
total = total + cells(8,"EY").value + Application.WorksheetFunction.VLookup(Cells(8, y).Value, Sheets("Pump Design").Range("Pump_design"), 154, False) 
y = y + 1 
End If 
Next y 

Cells(8, "EZ").Value = total 

End Sub 
+0

をしたいという結果に到達するためにいくつかの変更を加える必要があります。そうすれば、テストするためにコピーすることができ、信頼できないファイルをダウンロードすることなく人々が簡単に見ることができます。 また、「VLOOKUPが#VALUEを返す」や「セルの前後にセルを選択して合計する」のような特定の問題に絞り込んだ方がよいでしょうか? – Noumenon

+0

@ヌメメオンは私の質問のコードを参照してください –

+0

"関連する圧力"を保持するのはどの列ですか?列には「圧力」というラベルが付きません。 – Noumenon

答えて

0

私は、なぜ完全にわからないんだけど、あなたの条件は決して真にはなりません。あなたは

If Not (Cells(8, y).Value = 0 Or Cells(8, y).Value = "") Then 

または

If Not IsEmpty(Cells(8, y)) Then 

If Not Cells(8, y).Value = 0 And Cells(8, y).Value = "" Then 

を交換する場合、それは動作するはずです。ここで

+0

これはありがたいですが、私のvlookup機能はうまくいきません。範囲( "Pump_design")、154、False) '' total = total + total + total + total + total + total + total + total + Application.WorksheetFunction.VLookup(セル(8,4)。値、シート(「ポンプ設計」)。範囲(「Pump_design」)、154、False) 'それはなぜですか? –

+0

@MAxSegura Range( "Pump_design")が参照するセルはどれですか? Named Rangesメニューには表示されません。 – Noumenon

+1

問題を修正しました。ファイルの範囲( "Pump_design")はテーブル全体の名前です。主な問題は、xとyがdoubleと宣言されていないこと、y = 3〜153がy = 4〜153で置き換えられていることでした。 –

0

答え

Sub test() 
Dim total As Integer, x, y As Double 
For y = 4 To 153 
x = Cells(8, y).Value 
If Not IsEmpty(x) Then 
total = total + Application.WorksheetFunction.VLookup(x, Sheets("Pump Design").Range("Pump_design"), 154, False) 
End If 
Next y 

Cells(8, "EZ") = total 
End Sub 

はしかし、私はまだ私はあなたが使用している数式をコピーして貼り付けてください