Нужна помощь с использованием INDEX и MATCH с динамическим именованным диапазоном - PullRequest
1 голос
/ 11 октября 2010

Привет, у меня есть 2 ListBox (Purchase_Select_Debtor) & (Purchase_Select_Quantity) в пользовательской форме с txtBox для цены (txtPrice).

Код использует индекс и соответствие для возврата результата на основе выбранных должника и количества.

Ниже приведен мой текущий код, который отлично работает, но каждый раз, когда я добавляю нового должника, мне приходится изменять код, чтобы изменить физический диапазон.

Я бы хотел настроить его с помощью динамических именованных диапазонов, чтобы при добавлении новых должников функция индекса / соответствия все равно возвращала результат.

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)

Отладчик выделяет эти 2 строки кода;

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

Значение Temp = ""

Диаграмма, которую он использует как референс, такова;

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 Ответ

1 голос
/ 12 октября 2010

Джеймс,

Предполагается, что у вас есть заголовок и хотя бы одна строка данных в столбце А, а динамический диапазон составляет всего один столбец:

=OFFSET(Price_list!$A$1,1,0):OFFSET(Price_list!$A$1,COUNTA(Price_list!$A:$A)-1,0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...