Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перечислить значения без нулевых в исходном порядке. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Перечислить значения без нулевых в исходном порядке.
koyaanisqatsi Дата: Пятница, 23.01.2015, 22:07 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.

Как перечислить все положительные значения больше нуля друг за другом ? (отрицательных правда и не бывает )
Нужен столбец D формулой.
К сообщению приложен файл: prim.xlsx (9.1 Kb)
 
Ответить
СообщениеЗдравствуйте.

Как перечислить все положительные значения больше нуля друг за другом ? (отрицательных правда и не бывает )
Нужен столбец D формулой.

Автор - koyaanisqatsi
Дата добавления - 23.01.2015 в 22:07
_Boroda_ Дата: Пятница, 23.01.2015, 22:13 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16906
Репутация: 6615 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?
Код
=ИНДЕКС(B$1:B$71;НАИМЕНЬШИЙ(ЕСЛИ(B$1:B$71;СТРОКА(B$1:B$71));СТРОКА(B1)))

формула массива
К сообщению приложен файл: prim_1.xlsx (10.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
Код
=ИНДЕКС(B$1:B$71;НАИМЕНЬШИЙ(ЕСЛИ(B$1:B$71;СТРОКА(B$1:B$71));СТРОКА(B1)))

формула массива

Автор - _Boroda_
Дата добавления - 23.01.2015 в 22:13
koyaanisqatsi Дата: Пятница, 23.01.2015, 22:19 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, Да вариант рабочий Спасибо )
 
Ответить
Сообщение_Boroda_, Да вариант рабочий Спасибо )

Автор - koyaanisqatsi
Дата добавления - 23.01.2015 в 22:19
Richman Дата: Суббота, 24.01.2015, 01:55 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 346
Репутация: 54 ±
Замечаний: 0% ±

Excel 2007
koyaanisqatsi, Как вариант с доп столбцом
К сообщению приложен файл: 9310942.xlsx (10.6 Kb)


С Уважением, Richman



Сообщение отредактировал Richman - Суббота, 24.01.2015, 01:59
 
Ответить
Сообщениеkoyaanisqatsi, Как вариант с доп столбцом

Автор - Richman
Дата добавления - 24.01.2015 в 01:55
vikttur Дата: Суббота, 24.01.2015, 13:29 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Для доп. столбца я бы поставил в С2:
Код
=ЕСЛИ(B1;ЕСЛИ(ПОИСКПОЗ(B1;$B$1:B1;)=СТРОКА(B1);МАКС($C$1:C1)+1))

со смещением в ИНДЕКС:
Код
=ИНДЕКС(B$1:B$71;ПОИСКПОЗ(СТРОКА(B1);C$1:C$71;)-1)

И добавить проверку на количество извлекаемых - МАКС(C$1:C$71)

Или, если добавить шапку таблицы: формула в столбце А (без смещения) и выбор с помощью ВПР


Сообщение отредактировал vikttur - Суббота, 24.01.2015, 13:31
 
Ответить
СообщениеДля доп. столбца я бы поставил в С2:
Код
=ЕСЛИ(B1;ЕСЛИ(ПОИСКПОЗ(B1;$B$1:B1;)=СТРОКА(B1);МАКС($C$1:C1)+1))

со смещением в ИНДЕКС:
Код
=ИНДЕКС(B$1:B$71;ПОИСКПОЗ(СТРОКА(B1);C$1:C$71;)-1)

И добавить проверку на количество извлекаемых - МАКС(C$1:C$71)

Или, если добавить шапку таблицы: формула в столбце А (без смещения) и выбор с помощью ВПР

Автор - vikttur
Дата добавления - 24.01.2015 в 13:29
koyaanisqatsi Дата: Суббота, 24.01.2015, 13:52 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
а чем плох вариант Бороды ? Мне показался он рабочим. Или я что-то не доглядел ?
 
Ответить
Сообщениеа чем плох вариант Бороды ? Мне показался он рабочим. Или я что-то не доглядел ?

Автор - koyaanisqatsi
Дата добавления - 24.01.2015 в 13:52
Richman Дата: Суббота, 24.01.2015, 14:01 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 346
Репутация: 54 ±
Замечаний: 0% ±

Excel 2007
koyaanisqatsi, Отличный вариант у Александра, просто я учусь и пробую решать интересные задачи, как сам представляю. Ваша задача мне кажется интересной.


С Уважением, Richman

 
Ответить
Сообщениеkoyaanisqatsi, Отличный вариант у Александра, просто я учусь и пробую решать интересные задачи, как сам представляю. Ваша задача мне кажется интересной.

Автор - Richman
Дата добавления - 24.01.2015 в 14:01
vikttur Дата: Суббота, 24.01.2015, 14:03 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Никто не писал, что плохой.
Но вариант решения нужно выбирать в зависимости от объема данных.
Формула массива вычисляет много лишнего... Нет, не лишнего - производит много вычислений.
Если извлекаемых значений много или если исходная таблица очень большая, возможны торможения. В этом случае решение с доп. столбцом предпочтительнее. Доп. столбец - доп. вычисления? Да, но при этом во много раз уменьшаются вычисления в основной формуле.
 
Ответить
СообщениеНикто не писал, что плохой.
Но вариант решения нужно выбирать в зависимости от объема данных.
Формула массива вычисляет много лишнего... Нет, не лишнего - производит много вычислений.
Если извлекаемых значений много или если исходная таблица очень большая, возможны торможения. В этом случае решение с доп. столбцом предпочтительнее. Доп. столбец - доп. вычисления? Да, но при этом во много раз уменьшаются вычисления в основной формуле.

Автор - vikttur
Дата добавления - 24.01.2015 в 14:03
koyaanisqatsi Дата: Суббота, 24.01.2015, 14:09 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
vikttur, О как ! Да это как раз мой вариант. У меня основной файл очень глобальный получился. Правда его бы в идеале хотя бы на две части распилить. Правда это уже другая тема, причем созданная. Но пока помощи не видно (
Правда я уже 600кб отвоевал с помощью двух формул от бороды )


Сообщение отредактировал koyaanisqatsi - Суббота, 24.01.2015, 14:11
 
Ответить
Сообщениеvikttur, О как ! Да это как раз мой вариант. У меня основной файл очень глобальный получился. Правда его бы в идеале хотя бы на две части распилить. Правда это уже другая тема, причем созданная. Но пока помощи не видно (
Правда я уже 600кб отвоевал с помощью двух формул от бороды )

Автор - koyaanisqatsi
Дата добавления - 24.01.2015 в 14:09
vikttur Дата: Суббота, 24.01.2015, 14:16 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Если очень большой и извлекать уникальные не очень часто, лучше макросом.
Код работает медленнее встроенных функций листа, но размер файла будет существенно меньше.


Сообщение отредактировал vikttur - Суббота, 24.01.2015, 14:18
 
Ответить
СообщениеЕсли очень большой и извлекать уникальные не очень часто, лучше макросом.
Код работает медленнее встроенных функций листа, но размер файла будет существенно меньше.

Автор - vikttur
Дата добавления - 24.01.2015 в 14:16
AlexM Дата: Суббота, 24.01.2015, 15:20 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Код работает медленнее встроенных функций листа
Никогда не думал.
[vba]
Код
Sub no_zeros()
'Dim tm!: tm = Timer
Dim x, y(), i&, j&
x = Range("B1", Cells(Rows.Count, 2).End(xlUp)).Value
ReDim y(1 To UBound(x), 1 To 1)
     For i = 1 To UBound(x)
         If x(i, 1) <> 0 Then j = j + 1: y(j, 1) = x(i, 1)
     Next i
If j > 0 Then Range("C1").Resize(j).Value = y()
'MsgBox Timer - tm
End Sub
[/vba]
В коде таймер, если включить узнаем время
К сообщению приложен файл: prim_2.xls (33.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Суббота, 24.01.2015, 15:36
 
Ответить
Сообщение
Код работает медленнее встроенных функций листа
Никогда не думал.
[vba]
Код
Sub no_zeros()
'Dim tm!: tm = Timer
Dim x, y(), i&, j&
x = Range("B1", Cells(Rows.Count, 2).End(xlUp)).Value
ReDim y(1 To UBound(x), 1 To 1)
     For i = 1 To UBound(x)
         If x(i, 1) <> 0 Then j = j + 1: y(j, 1) = x(i, 1)
     Next i
If j > 0 Then Range("C1").Resize(j).Value = y()
'MsgBox Timer - tm
End Sub
[/vba]
В коде таймер, если включить узнаем время

Автор - AlexM
Дата добавления - 24.01.2015 в 15:20
vikttur Дата: Суббота, 24.01.2015, 15:57 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Немного ввел в заблуждение. Подразумевал одинаковые вычисления.
 
Ответить
СообщениеНемного ввел в заблуждение. Подразумевал одинаковые вычисления.

Автор - vikttur
Дата добавления - 24.01.2015 в 15:57
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!