Страницы: 1
RSS
Поиск пропущенных чисел.
 
В столбце А записаны числа от 1 до 1000 с произвольными пропусками. За одну формулу, вывести в столбец В все пропущенные значения. Помогите сделать, пожалуйста, ничего не получается.
 
Цитата
Андрей Картошкин: ничего не получается
не видно, чтобы вы пытались…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Пробовал в гугл таблицах вот такое
=arrayformula(ЕСЛИ((arrayformula(A2:A-A1:A))>2;ЕСЛИ(arrayformula(A2:A-A1:A)>2;SEQUENCE(arrayformula(A2+A1+1);1;arrayformula(A1:A+1);1);0);ЕСЛИ((arrayformula(A2:A-A1:A))>1;arrayformula(A1:A+1);0)))

И различные способы предложенные в интернете для Excel, но ничего не работает.
Изменено: Андрей Картошкин - 26.10.2020 18:26:04
 
Можно макросом сделать
 
Макросом очень хорошая идея, но к большому сожалению требуют именно формулой((
 
Цитата
Андрей Картошкин написал:
требуют именно формулой
версия эксель какая?
Соблюдение правил форума не освобождает от модераторского произвола
 
2019
Или в google sheets
Изменено: Андрей Картошкин - 26.10.2020 18:45:08
 
=НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($A$1:$A$9;СТРОКА(A1:ИНДЕКС(A:A;МАКС($A$1:$A$9))))=0;СТРОКА(A1:ИНДЕКС(A:A;МАКС($A$1:$A$9))));СТРОКА(A1))
Формула массива, ввод тремя клавишами
 
ну можно так
=IFERROR(SMALL(IF(ISNA(MATCH(ROW(INDEX(A:A;MIN(A:A)):INDEX(A:A;MAX(A:A)));A:A;));ROW(INDEX(A:A;MIN(A:A)):INDEX(A:A;MAX(A:A))));ROW(A1));"")
По вопросам из тем форума, личку не читаю.
 
Эти формулы работают, но есть вариант, чтобы не копировать эту формулу в каждую ячейку столбца или растягивать, а так, чтобы ввести в одну клетку, а все значения автоматически выводились в столбец?
 
если именно одной формулой, то
Код
=ФИЛЬТР(ПОСЛЕД(МАКС(A1:A9));ЕНД(ПОИСКПОЗ(ПОСЛЕД(МАКС(A1:A9));A1:A9;)))
но это 365, а не 2019; если же формулу можно протягивать - то варианты предложены выше
Соблюдение правил форума не освобождает от модераторского произвола
 

Вот еще интересный вариант, но, правда, тоже макросами (. Что делать: откройте этот файл, разрешите макросы, сверните файл. Перейдите в книгу, где нужно работать. Нажмите Ctrl+Q. Следуйте инструкциям.

Правда здесь неудобно то, что если вы добавите чисел в диапазон с пропущенными числами, то придется заново макрос запускать. Хотя можно написать макрос, который будет запускаться сам при изменении значений в определенном диапазоне)

 
Цитата
rud.666 написал:
Вот еще интересный вариант
По вопросам из тем форума, личку не читаю.
 
отличный макрос. одно неудобство, если хоть что-то поменяется - нужно переписывать
но в целом - интересный вариант
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
БМВ, Ігор Гончаренко,  :D  

пусть еще будет интересный вариант
Код
Sub ads()
Dim i As Long, lr As Long, arr, cell As Range
lr = Cells(Rows.Count, 1).End(xlUp).Row
k = 0
Z = Application.WorksheetFunction.Max(Range("A1:A" & lr))
ReDim arr(Z - lr, 0)
For i = 1 To Z
    Set cell = Range("A1:A" & lr).Find(What:=i, LookIn:=xlFormulas, LookAt:=xlWhole)
    If cell Is Nothing Then
        arr(k, 0) = i
        k = k + 1
    End If
Next i
Range("B1:B" & UBound(arr)) = arr
End Sub
Изменено: Mershik - 26.10.2020 21:30:07
Не бойтесь совершенства. Вам его не достичь.
 
в Гуглах:
Код
=FILTER(ARRAYFORMULA(СТРОКА(A1:A1000));ARRAYFORMULA(ЕНД(ПОИСКПОЗ(СТРОКА(A1:A1000);A1:A9;0))))
Соблюдение правил форума не освобождает от модераторского произвола
Страницы: 1
Наверх