Как обойти ограничение глубины функции Excel Excel? - PullRequest
0 голосов
/ 13 ноября 2009

Для формулы Excel мне нужна первая ячейка из списка ячеек, которая содержит числовое значение:

 A  |  B  |  C  | ... |  Z  |
-----------------------------
    | 0.1 | 0.4 | ... | =0.1
    |     | 0.2 | ... | =0.2

Я использую эту схему:

IF(ISNUMERIC(A1);A1;IF(ISNUMERIC(B1);A2;IF(ISNUMERIC(C1);C1;IF(...))))))))

К сожалению, это работает только для семи столбцов, поскольку максимальная длина ограничена в Excel.

Есть ли способ перефразировать эту формулу, чтобы она не углублялась с каждым дополнительным столбцом?

Ответы [ 4 ]

3 голосов
/ 13 ноября 2009

ОК, посмотрим. Попробуйте это

=INDEX(A1:Y1,SUMPRODUCT((A1:Y1="")*1)+1)

Суммарный продукт подсчитывает количество пробелов, затем индекс ищет значение в ячейке, где number of blanks + 1

Надеюсь, это поможет.

2 голосов
/ 13 ноября 2009

В одной ячейке вы можете сделать это с помощью формулы массива:

Isnumber предоставляет тест в Excel 2007

Умножить результат на столбец ()

Используйте оператор if, чтобы помочь следующей функции min:

Используйте функцию min для определения первого числового столбца.

Не забудьте использовать Ctrl-Shift-Enter, когда вы хотите создать формулу массива, а не просто ввести.

=INDEX(A1:Z1,MIN(IF(ISNUMBER(A1:Z1),COLUMN(A1:Z1),5000)))

Это также находит первый используемый столбец в нескольких строках, если вам нужна эта функциональность.

1 голос
/ 13 ноября 2009

Ответ astanders работает (при условии, что ячейки, следующие за первым числом, всегда заполнены).

Вы также можете написать свою собственную функцию в модуле VBA.

Public Function getFirstNumber(ByRef sourceRow As Range) As Double
    For Each Cell In sourceRow.Cells
        If WorksheetFunction.IsNumber(Cell) = True Then
            getFirstNumber = Cell.Value
            Exit Function
        End If
    Next Cell
End Function
1 голос
/ 13 ноября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...