Выберите значение ячейки над пустой ячейкой
Как выбрать ячейку над пустой ячейкой? У меня есть ощущение, что это будет что-то очень простое, но я не добился никаких успехов с 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)))}
Это работает, только если у вас есть пустая ячейка над вашими данными.