Страницы: 1
RSS
Преобразовать массив, чтобы сначала выводились числа модуль которых меньше 1.
 
Не представляю как это сделать с помощью формул Excel
 
Цитата
Yak73 написал: сделать с помощью формул Excel
Формулы Excel конечно можно и на обрывке салфетки карандашом написать, в ФАЙЛЕ они будут гармоничней выглядеть  
Согласие есть продукт при полном непротивлении сторон
 
Сорян :)
 
=ЕСЛИ(ABS(B3)<1;B3;"")
и вниз по столбцу
Согласие есть продукт при полном непротивлении сторон
 
Это конечно круто, но мне нужно СНАЧАЛА числа модуль которых меньше 1, ПОТОМ остальные
 
Формула массива
=НАИМЕНЬШИЙ(ABS($B$3:$B$11);СТРОКА()-2)
Согласие есть продукт при полном непротивлении сторон
 
но ведь модуль искажает число, а надо исп модуль лишь как признак сравнения
 
Yak73, UDF, вводить как формулу массива
Код
Function Ya(a) As Variant()
Dim x
  If IsObject(a) Then a = a.Value
  On Error GoTo 1
  With New Collection
    For Each x In a
      If Abs(x) < 1 Then
        .Add x, before:=1
      Else
2       .Add x
      End If
    Next
    ReDim a(1 To .Count, 1 To 1)
    For x = 1 To .Count
      a(x, 1) = .Item(x)
    Next
  End With
  Ya = a
  Exit Function
1 Resume 2
End Function
 
но ведь мне нужно без VBA
 
Так подойдет?
Изменено: Bema - 27.12.2016 21:57:16
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Bema, работает, конечно, но как-то костыльно. Существует вариант по-проще?  
 
Yak73, а в чем костыльность?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
Это конечно круто, но мне нужно... но ведь мне нужно без VBA...  но как-то костыльно
и хоть бы раз благодарность за помощь...
 
Цитата
vikttur написал: и хоть бы раз благодарность за помощь...
Я подумал, что и так понятно, что я всем благодарен за помощь по дефолту.
БОЛЬШОЕ ВСЕМ СПАСИБО!  
 
Цитата
Bema написал:  Yak73 , а в чем костыльность?
Правильно ли я понимаю, что если ячейка не удовлетворят условию, мы искусственно вызываем ошибку, и потом вылавливаем строки с ошибкой?
Или я не догоняю? Можете по-подробнее пояснить, пожалуйста.
Спасибо
 
Цитата
Bema написал: Так подойдет?
Ведь не работает, если есть неуникальные элементы массива
 
По возрастанию с формулой массива
Код
=NDEX(B$3:B$18;AGGREGATE(15;6;ROW($1:$20)/(ABS($B$3:$B$18)=SMALL(ABS($B$3:$B$18);ROWS($3:3)));1))
 
Всем спасибо
 
Формула массива:
=ИНДЕКС($C$3:$C$11;ПРАВБ(НАИМЕНЬШИЙ(ABS($C$3:$C$11)+(СТРОКА($C$3:$C$11)-2)/10^5;СТРОКА(A1));3))
Страницы: 1
Наверх