Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2017, 09:12   #1
Яковлев Данил
Новичок
Джуниор
 
Регистрация: 23.05.2017
Сообщений: 3
По умолчанию Обман системы

Ребят, мне необходимо в программе ексель из ряда чисел выбрать нужные.
к примеру идёт ряд(11;13;12;0;10;11;14;0;0;0;66;0; 45;0)
в данном случае нужные цифры это 12;14;66;45 то есть те, которые идут перед нулём и кроме нуля!
есть возможность в программе ексель осуществить это?
Яковлев Данил вне форума Ответить с цитированием
Старый 23.05.2017, 09:37   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
к примеру идёт ряд...
Где "идет"? В строках? В столбцах? Задан массивом в vba?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 23.05.2017, 09:45   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Где "идет"? В строках? В столбцах? Задан массивом в vba?
еще может оказаться что тс получает инфу с сайта котировок и текст "идет" в одну ячейку
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.05.2017, 10:03   #4
Яковлев Данил
Новичок
Джуниор
 
Регистрация: 23.05.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Где "идет"? В строках? В столбцах? Задан массивом в vba?

Весы через кабель отправляют на ПК каждую секунду значение,а ПК сохраняет их в экселе, как показанно на рисунке(ну примерно так)
далее мне необходимо выбрать значение, которое сохраняется перед нулём, и не является нулём (в данном случае это 4432; 2331; 3456; 444)
справится Ексель с моим вопросом?
Яковлев Данил вне форума Ответить с цитированием
Старый 23.05.2017, 10:17   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно макросом:
Код:
Sub Exstr()
    Dim i As Long, j As Long, a(), b()
    a = Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row).Value
    ReDim b(1 To UBound(a, 1), 1 To 1)
    For i = 2 To UBound(a, 1)
        If a(i, 1) = 0 Then
            If a(i - 1, 1) <> 0 Then
                j = j + 1: b(j, 1) = a(i - 1, 1)
            End If
        End If
    Next
'В масиве "b" требуемые данные. Выведем их на лист в столбец "c"
    [C1].Resize(UBound(b, 1)).Value = b
End Sub
Пример во вложенгии. Откройте файл и выполните макрос "Extr".
Можно этот макрос привязать к событию изменения ячеек в столбце "B" (или пересчет ячеек). Тогда он будет выполняться при каждом изменении исходных данных автоматически.
Вложения
Тип файла: rar Книга1.rar (6.2 Кб, 6 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 23.05.2017 в 10:19.
SAS888 вне форума Ответить с цитированием
Старый 23.05.2017, 10:34   #6
Яковлев Данил
Новичок
Джуниор
 
Регистрация: 23.05.2017
Сообщений: 3
По умолчанию

Спасибо!!!
Яковлев Данил вне форума Ответить с цитированием
Старый 23.05.2017, 11:36   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub Before0()
  Dim ar(), rg As Range, i&
  Columns(2).Replace "0", "", xlWhole:  i = 1
  ReDim ar(1 To WorksheetFunction.Count(Columns(2)), 1 To 1)
  Set rg = Cells(1, 2): If IsEmpty(rg) Then Set rg = rg.End(xlDown)
  Do While rg.Row < Rows.Count
    If IsEmpty(rg.Offset(1, 0)) Then ar(i, 1) = rg: i = i + 1
    Set rg = rg.End(xlDown)
  Loop
  [c1].Resize(UBound(ar)) = ar
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.05.2017, 15:36   #8
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

Формула массива для С1
Код:
=ИНДЕКС(B$2:B$99;НАИМЕНЬШИЙ(ЕСЛИ((B$2:B$99>0)*(B$1:B$98=0);СТРОКА(B$1:B$98));СТРОКА()))
Ошибку убрать функцией ЕСЛИОШИБКА()
Алексей М.
AlexM12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обман драйверов. Voropaev_pavel Компьютерное железо 4 18.07.2013 11:29
Обман ellpascal Свободное общение 47 12.07.2010 09:55
Обман античита SKS Софт 7 06.02.2009 01:08
Оптический обман LepihinMS Свободное общение 1 15.07.2007 14:16