2010-10-11 49 views
1

您好我有一个用于价格txtBox(txtPrice)的Userform上的2个ListBox的(Purchase_Select_Debtor)&(Purchase_Select_Quantity)。需要帮助使用动态命名范围的INDEX和MATCH

该规范使用索引和匹配返回基于债务人和数量选择的结果。

下面是我目前的代码工作正常,但每次我添加一个新的债务人,我不得不改变代码来改变物理范围。

我想使用动态命名范围进行设置,因此当我添加新的债务人时,索引/匹配函数仍然会返回结果。

Temp = Application.Index(Sheets("Price_list").Range("A1:I22"), _ 
Application.Match(Purchase_Select_Debtor.Value, Sheets("Price_list").Range("A1:A22"), 0), _ 
Application.Match(Purchase_Select_Quantity.Value, Sheets("Price_list").Range("A1:I1"), 0)) 

    txtPrice.Value = FormatCurrency(Expression:=Temp, _ 
    NumDigitsAfterDecimal:=2) 

我试过这个,但它没有工作;类型错配运行时错误13

Temp = Application.Index(Range("Price_list_Table"), _ 
Application.Match(Purchase_Select_Debtor.Value, Range("Price_list_Debtor_ADD"), 0), _ 
Application.Match(Purchase_Select_Quantity.Value, Range("Price_list_Quantity_ADD"), 0)) 

    txtPrice.Value = FormatCurrency(Expression:=Temp, _ 
    NumDigitsAfterDecimal:=2) 

调试器突出显示了这两行代码;

txtPrice.Value = FormatCurrency(Expression:=Temp, _ 
    NumDigitsAfterDecimal:=2) 

温度的值= “”

它使用作为refrence下图是本;

http://i19.photobucket.com/albums/b152/mantricorb/Chart.jpg

和动态命名区域是如下;

Price_list_Table = OFFSET(PRICE_LIST $ A $ 1,0,0,COUNTA(PRICE_LIST $ A:!$ A),9)!

Price_list_Debtor_ADD = OFFSET(PRICE_LIST $ A $ 1,0,0 ,COUNTA(PRICE_LIST $ A:$ A),1)

Price_list_Quantity_ADD = OFFSET(PRICE_LIST $ A $ 1:$ I $ 1,0,0)

我认为有一些错误与动态命名范围,因为它不返回结果,任何帮助将非常感激。

回答

1

詹姆斯,

这里假设你有一个报头和在列A和动态范围数据中的至少一排是仅有一个柱宽:

=OFFSET(Price_list!$A$1,1,0):OFFSET(Price_list!$A$1,COUNTA(Price_list!$A:$A)-1,0)