2015-08-09 2 views
0

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

Что я хочу сделать, это искать столбец A от 1 до 100 для метки в столбце A (который я кодирую в формуле именованного диапазона) и где он ее найдет, именованный диапазон будет знать строку. Я знаю, что мне все равно придется обновлять именованный диапазон, если мы когда-либо изменим имя строки, но мне нужно будет только обновить один именованный диапазон, а не 75-100 именованных диапазонов, как и сейчас, всякий раз, когда мы вносим изменения.

Вот текущий именованный диапазон, который я использую:

=INDIRECT("Input!$C$23:"LastColumn&"$23") 

LastColumn именованный диапазон, который содержит букву последнего столбца.

Вот некоторые истории о том, почему я делаю это так:

Когда я первый создал это я ссылаться клетки непосредственно в формулах (не именованный диапазон) и должен был изменить все формулы, когда я добавил еще строка, столбец и т. д. Затем я переключил его на Named References. Это фиксировало это, поэтому всякий раз, когда мы добавляли строку, мне вообще не нужно было менять ссылки. Однако мне все равно приходилось менять все ссылки, когда мы меняли количество столбцов. То, что я сделал, это сделать столбцы переменной, поэтому, если мы изменим количество столбцов, мне не нужно вносить какие-либо изменения в именованные диапазоны. К сожалению, у этого были непреднамеренные последствия его создания, когда я добавляю, удаляю или перемещаю строку, мне нужно обновить все ссылки. Теперь у меня есть идея, которая заставит переменные строк и столбцов. Поэтому я могу внести любые изменения, не обновляя никаких ссылок.

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

+1

TL; DR. Пожалуйста, прочитайте [ask]. Создайте простой MCVE, задайте простой вопрос. – Amit

+0

@ Допустим, вопрос прост - остальное - это причина того, почему мне нужно это делать. Я упростил, хотя и различал вопрос и историю. – djblois

+0

Какая строка ВСЕГДА содержит правильное количество непустых записей и содержит ли они цифры или текст? Пример: строка заголовка всегда будет иметь записи в экстенты матрицы данных, в то время как строки данных могут содержать или не содержать пробелы в последнем столбце. – Jeeped

ответ

0

Отмените батарею INDIRECT function и используйте INDEX function для завершения диапазона с MATCH, размещая последнюю колонку. Строку можно определить с помощью MATCH на столбце A до «Label».

Как я понимаю, вы хотите найти «Ярлык» в столбце A и определить его местоположение в =INDIRECT("Input!$C$23:"LastColumn&"$23"), где 23 в настоящее время определяет строку.

Отказавшись КОСВЕННЫЙ, то Input!$C$23 ссылка может быть изменен на:

=INDEX(Input!$C:$C, MATCH("Label", Input!$A:$A, 0)) 

Таким образом, все, что осталось найти последний столбец. Там должно быть что-то на том листе, который может использоваться, чтобы определить местонахождение последнего столбца независимо от столбца делеции или дополнения, но я буду просто использовать последнее значение в строке, содержащей «Label» в столбце A.

'this finds the last text value in row 23 
=MATCH("zzz", Input!23:23) 
'this finds the last number or date value in row 23 
=MATCH(1e99, Input!23:23) 
'since I do not know whether *the row* (e.g. 23:23) contains text, numbers, dates 
'or a combination of any of those, I will have to double up the formula and add error control 
=MAX(IFERROR(MATCH("zzz", Input!23:23), 0), IFERROR(MATCH(1e99, Input!23:23), 0)) 

Вы можете сшить две функции INDEX вместе с двоеточием так же, как если бы вы набрали C23: Z23.

=INDEX(Input!$C:$C, MATCH("Label", Input!$A:$A, 0)):INDEX(Input!$A:$ZZ,MATCH("Label",Input!$A:$A,0),MAX(IFERROR(MATCH(1E+99, INDEX(Input!$A:$ZZ,MATCH("Label",Input!$A:$A,0),0)),0),IFERROR(MATCH("zzz",INDEX(Input!$A:$ZZ,MATCH("Label",Input!$A:$A,0),0)),0))) 

Да, это выглядит сложным, но много, что исходит от не зная, что строка в вопросе, содержит ли текст или цифры, и это делает меньше работы, чем летучий INDIRECT (который пересчитывает всякий раз, когда что-либо в целых изменениях рабочей книги) оставаясь актуальным, несмотря на удаление и вставку строк и столбцов.

BTW, при использовании текстовых ссылок в пределах INDIRECT нет необходимости использовать абсолютный контрольный индикатор $. Адрес-как-текст - текстовая строка; он не изменится, что бы вы ни делали, чтобы не перепечатывать его. Вышеуказанный метод требует абсолютной ссылки на ячейки, поскольку он использует фактические ссылки на ячейки и ячейки.

+0

Извините, первый столбец всегда будет текстом, а не цифрами. Я ценю вашу помощь. еще раз спасибо :) – djblois

+0

Jeeped, как бы я его упростил? первый столбец всегда будет текстовым. – djblois

+0

Благодарим за помощь. – djblois

Смежные вопросы