Выберите значение ячейки над пустой ячейкой

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

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

data1
data2

data3
data4

data5

data6

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

3 ответа

Решение

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

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
Обратите внимание, что эта подпрограмма будет работать только для отдельных столбцов или строк. мистифицировать

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

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

Эта формула, массив вводится с помощью 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)))}

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

Другие вопросы по тегам