[excel] Прошу совета

ivfrjdk0k

Прошу подсказать, как можно сделать подобное, или указать на какие функции мне нужно обратить внимание.
Дано:
Столбец, в котором могут быть различные значения, в том числе и текстовые. Количество заполненных ячеек в нем неизвестно и может изменяться. Между заполненными ячейками (строками) могут быть и пустые.
Требуется:
Получить значение из СЛУЧАЙНОЙ числовой ячейки этого столбца. Текстовые и пустые ячейки должны игнорироваться. При этом «бесполезная» пустая ячейка – это не 0, т.к. среди «полезных» числовых значений довольно много нулей.
Это, конечно, в идеале. Можно ужесточить (а я пока не умею по-другому, новичок я в ентих екселях) условия для исходной таблицы. Тогда не будет текстовых ячеек, не будет разрывов пустыми ячейками, и можно будет получать значения из адреса СЛУЧМЕЖДУ(1;X)
Но я пока не знаю и как определять X – число заполненных ячеек, которое каждый раз разное. Да и вообще, этот вариант не столь хорош.
Ну, собственно, вот.
Заранее благодарю за полезные ответы.

korsika

сделай сортировку по нужному тебе столбцу.
потом иди в цикле пока не придёшь к пустой ячейке.
вот тебе и твоё Х

alekc34

Это, конечно, в идеале. Можно ужесточить (а япока не умею по-другому, новичок я в ентих екселях) условия дляисходной таблицы. Тогда не будет текстовых ячеек, не будет разрывовпустыми ячейками, и можно будет получать значения из адресаСЛУЧМЕЖДУ(1;X)
Но я пока не знаю и как определять X – числозаполненных ячеек, которое каждый раз разное. Да и вообще, этот вариантне столь хорош.

в этом случае можно воспользоваться функцией COUNT(A:A она как раз считает количество числовых значений (в данном варианте — в колонке А если у тебя нет текстовых значений, то функция как раз выдаст количество чисел в колонке, а если нет разрывов, то это значение будет совпадать с количеством заполненных ячеек
в принципе, я могу рассказать, как бы я действовала, если бы мне нужно было из исходного столбца выделить только числа, но я не уверена, что у меня оптимальный вариант

ALEX02112

Я бы написал функцию на VBA. Мб есть более оптимальный вариант.
Например такую:
Public Function RandVal(column As String, max As Integer) As String
Dim st As String
Dim place As Integer

Randomize
Dim random_val As Integer
random_val = Intmax + 1) * Rnd)

place = 1
i = 1
Do
st = Cells.Range(column & place).Value
place = place + 1
If IsNumeric(st) Then
If i = random_val Then
Exit Do
End If
i = i + 1
End If
Loop While (i <= max)

RandVal = st
End Function

и запускать ее через формулу: =RandVal("A";COUNT(A:A
мб есть где-то баги, но вроде бы работает

VladKhan

Вариант без макросов:

alekc34

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

ivfrjdk0k

Всем спасибо.
Воспользовался идеей .
Использовал LOOKUP вместо VLOOKUP, так как нужно было работать не с отдельными столбцами, а с целыми листами.
Также верую, что с VBA было бы лучше (и уж точно компактнее). Попробовал этот скрипт - вроде бы работает нормально. Но религия не позволяет мне использовать то, чего пока не до конца понимаю.
Да, и на момент написания вопроса про COUNT я тоже не знал, за эту подсказку также спасибо.
Оставить комментарий
Имя или ник:
Комментарий: