Как выбрать ячейку над пустой ячейкой? У меня такое чувство, что это будет что-то очень простое, но с 2004 года я не делал никаких успехов.

Вот простой лист с одним столбцом.

data1
data2

data3
data4

data5

data6

Я надеюсь, что это будет функция, и она должна возвращать data2, data4 и data4 в виде массива.

3 ответа3

0

Эта формула, массив вводится с помощью control+shift+enter

{=OFFSET(A1,(ISBLANK(A1:A9))*(ROW(A1:A9))-2,0)}

вернет этот массив

={#REF!;#REF!;"data2";#REF!;#REF!;"data4";#REF!;"data5";#REF!}

В зависимости от того, что вы хотите с ним сделать, вам нужно будет игнорировать ошибки REF и обрабатывать ошибки. Это также может быть проще, чем это. Если, например, "данные" - это числа, которые вы хотите сложить, скажем, начиная с A2

10
20

30
40

50

60

и вы хотите вернуть 110 (20+40+50), то

{=SUM((ISBLANK(A2:A10)*(A1:A9)))}

Это работает, только если у вас есть пустая ячейка над вашими данными.

0

Перейдите в пустую ячейку, где вы хотите, чтобы ваш результат, и просто введите «=», а затем нажмите стрелку вверх. ИЛИ введите «=», затем введите букву столбца и номер строки. Например, если ячейка, в которой вы хотите отобразить результат в ячейке B5, вы щелкнете по ячейке B5 и напечатаете «= B4» (без кавычек), а затем нажмите клавишу ввода. Это даст вам результат ячейки B4 в ячейке B5, которую вы выбрали.

просто перейдите туда, где вы хотите, чтобы ваш результат и введите «= A2+A4+A6» Это добавит результаты ячеек в ячейку, которую вы выбрали.

0

Джереми - я думаю, что вам нужно написать простую функцию макроса, чтобы сделать это:

Public Sub FillBlanks()
    Set myRange = Application.InputBox( _
        prompt:="Select a range", Type:=8)
    Dim prevCellValue
    For Each c In myRange.Cells
        If c.Value <> "" Then _
            prevCellValue = c.Value _
        Else: c.Value = prevCellValue
    Next
End Sub
Обратите внимание, что эта подпрограмма будет работать только для отдельных столбцов или строк. мистифицировать

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .