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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск в массиве с определенными параметрами - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск в массиве с определенными параметрами (Макросы/Sub)
Поиск в массиве с определенными параметрами
stasprv Дата: Воскресенье, 13.11.2016, 17:45 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, уважаемые форумчане!

Обращаюсь к Вам как к экспертам знания vba. Мне необходимо обработать более 1 млрд строк, догадываюсь, что это можно сделать оптимизировать, но знаний не хватает. Если есть такая возможность - помогите, пожалуйста.

Ситуация следующая:
У меня есть много текстовых файлов. Каждый из них - лог взвешивания, каждый содержит около 60 000 строк.
Я копирую каждый файл на отдельный лист (пример прикреплен). На листе взвешивания отделены пустыми строками друг от друга.
Мне необходимо скопировать на отдельный лист (или хотя бы как-то выделить) пропуска машин (в каждом взвешивании это срока со словами "отсканирован пропуск"), вес которых 45 и более тонн (в каждом взвешивании это строка с текстом "зарегистрированный вес") и в которых разница при процедуре взвешивания более 9 тонн (сейчас я это сравниваю формулами, вычитая одну текущую ячейку из следующей, в файле вложении это видно). Проблема в том, что в каждом взвешивании количество строк разное.
Сейчас я делаю всё это вручную... примерно 3 месяца нужно, чтобы обработать все логи.
К сообщению приложен файл: 5164229.xlsx (92.9 Kb)
 
Ответить
СообщениеДобрый день, уважаемые форумчане!

Обращаюсь к Вам как к экспертам знания vba. Мне необходимо обработать более 1 млрд строк, догадываюсь, что это можно сделать оптимизировать, но знаний не хватает. Если есть такая возможность - помогите, пожалуйста.

Ситуация следующая:
У меня есть много текстовых файлов. Каждый из них - лог взвешивания, каждый содержит около 60 000 строк.
Я копирую каждый файл на отдельный лист (пример прикреплен). На листе взвешивания отделены пустыми строками друг от друга.
Мне необходимо скопировать на отдельный лист (или хотя бы как-то выделить) пропуска машин (в каждом взвешивании это срока со словами "отсканирован пропуск"), вес которых 45 и более тонн (в каждом взвешивании это строка с текстом "зарегистрированный вес") и в которых разница при процедуре взвешивания более 9 тонн (сейчас я это сравниваю формулами, вычитая одну текущую ячейку из следующей, в файле вложении это видно). Проблема в том, что в каждом взвешивании количество строк разное.
Сейчас я делаю всё это вручную... примерно 3 месяца нужно, чтобы обработать все логи.

Автор - stasprv
Дата добавления - 13.11.2016 в 17:45
Udik Дата: Воскресенье, 13.11.2016, 18:17 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Не совсем понятен алгоритм. Как я понял, нужно находить очередную строку, содержащую Текущий вес: и, если она соответствует условиям, выводить на отдельный лист какие-то данные ( строка со словами "отсканирован пропуск" и пустые промежуточные строки не обнаружены). Сразу встаёт вопрос зачем данные из каждого файла копировать на очередной лист. Поиск и выделение нужных данных можно в памяти проделать. Наверное лучше будет, если выложите кусок файла-лога, и объясните что именно нужно вытянуть на лист.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНе совсем понятен алгоритм. Как я понял, нужно находить очередную строку, содержащую Текущий вес: и, если она соответствует условиям, выводить на отдельный лист какие-то данные ( строка со словами "отсканирован пропуск" и пустые промежуточные строки не обнаружены). Сразу встаёт вопрос зачем данные из каждого файла копировать на очередной лист. Поиск и выделение нужных данных можно в памяти проделать. Наверное лучше будет, если выложите кусок файла-лога, и объясните что именно нужно вытянуть на лист.

Автор - Udik
Дата добавления - 13.11.2016 в 18:17
Kuzmich Дата: Воскресенье, 13.11.2016, 21:11 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Из строки с пропуском (их почему-то несколько в каждом взвешивании), например
01,08,2016 08:24:32 Отсканирован пропуск "D26,1 959395"
в каком виде выделить его значение?
Так - "D26,1 959395"
Почему строки с текущим весом разделены другими текстовыми строками?
Может надо выделить их и перенести в другое место, где уже вычислять разницу?
 
Ответить
СообщениеИз строки с пропуском (их почему-то несколько в каждом взвешивании), например
01,08,2016 08:24:32 Отсканирован пропуск "D26,1 959395"
в каком виде выделить его значение?
Так - "D26,1 959395"
Почему строки с текущим весом разделены другими текстовыми строками?
Может надо выделить их и перенести в другое место, где уже вычислять разницу?

Автор - Kuzmich
Дата добавления - 13.11.2016 в 21:11
K-SerJC Дата: Понедельник, 14.11.2016, 14:57 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
так подойдет?
К сообщению приложен файл: stasprv.xlsm (95.0 Kb)


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщениетак подойдет?

Автор - K-SerJC
Дата добавления - 14.11.2016 в 14:57
stasprv Дата: Вторник, 15.11.2016, 19:18 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
так подойдет?


Добрый день, K-SerJC. Спасибо, отличный алгоритм получился. Только, как я понял в моем примере нет машин более 45 ny? поэтому он выдает разницу в тех, которые весят меньше. Скопировал данные из лога, где есть такие машины на лист, запустил пакрос... type mismatch. Подскажите, пожалуйста, что я делаю не так? Лог прикрепляю
К сообщению приложен файл: 29-06-2016-Scal.7z (95.9 Kb)


Сообщение отредактировал stasprv - Вторник, 15.11.2016, 20:03
 
Ответить
Сообщение
так подойдет?


Добрый день, K-SerJC. Спасибо, отличный алгоритм получился. Только, как я понял в моем примере нет машин более 45 ny? поэтому он выдает разницу в тех, которые весят меньше. Скопировал данные из лога, где есть такие машины на лист, запустил пакрос... type mismatch. Подскажите, пожалуйста, что я делаю не так? Лог прикрепляю

Автор - stasprv
Дата добавления - 15.11.2016 в 19:18
stasprv Дата: Вторник, 15.11.2016, 19:21 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Наверное лучше будет, если выложите кусок файла-лога, и объясните что именно нужно вытянуть на лист.


Добрый день, Udik. Наверное, я просто не на столько хорошо знаю excel, как Вы, поэтому описываю задачу исходя из своих знаний. Изначально у меня есть текстовые файлы с логами, каждый весит более 1 Гб, я их копирую в xls на несколько листов, т.к. на один лист помещается не более 65 000 строк примерно. Лог прикрепляю
К сообщению приложен файл: 9926426.7z (95.9 Kb)


Сообщение отредактировал stasprv - Вторник, 15.11.2016, 21:18
 
Ответить
Сообщение
Наверное лучше будет, если выложите кусок файла-лога, и объясните что именно нужно вытянуть на лист.


Добрый день, Udik. Наверное, я просто не на столько хорошо знаю excel, как Вы, поэтому описываю задачу исходя из своих знаний. Изначально у меня есть текстовые файлы с логами, каждый весит более 1 Гб, я их копирую в xls на несколько листов, т.к. на один лист помещается не более 65 000 строк примерно. Лог прикрепляю

Автор - stasprv
Дата добавления - 15.11.2016 в 19:21
stasprv Дата: Вторник, 15.11.2016, 19:23 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Так - "D26,1 959395"


Добрый день, Kuzmich. Данные пропуска можно выделить в любом виде. Вы мне и так значительно облегчите задачу. Конечно, в идеале в виде 959395 (6-7 последних цифр), но это совсем супер.


Сообщение отредактировал stasprv - Вторник, 15.11.2016, 21:18
 
Ответить
Сообщение
Так - "D26,1 959395"


Добрый день, Kuzmich. Данные пропуска можно выделить в любом виде. Вы мне и так значительно облегчите задачу. Конечно, в идеале в виде 959395 (6-7 последних цифр), но это совсем супер.

Автор - stasprv
Дата добавления - 15.11.2016 в 19:23
stasprv Дата: Вторник, 15.11.2016, 19:39 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
так подойдет?


K-SerJC, посмотрел алгоритм более внимательно. Всё-таки он работает немного не правильно. Наверное, я недостаточно понятно написал. Давайте попробую еще раз. Мне необходим номер пропуска машины, у которой при взвешивании соблюдается одновременно два условия: 1. есть скачек по модулю более 9 тн. между любыми интервалами (двумя соседними строчками). Без разницы в плюс или в минус
Например:
01,08,2016 03:48:21 Текущий вес: 37,140
01,08,2016 03:48:21 Текущий вес: 36,620 - разница в этом и следующем взвешивании более 9 тн.
01,08,2016 03:48:21 Текущий вес: 26,060

2. и зарегистрированный вес которой более 45 тн.
Например:
01,08,2016 03:47:51 Зарегистрированный вес: 61,160 - зарегистрированный вес более 45 тн.

Номер пропуска машины можно взять отсюда:
01,08,2016 03:47:51 Отсканирован пропуск "D26,1 961469" - отсюда необходимо взять номер пропуска

Взвешивания машин друг от друга разделены пустыми строками.

Ваше решение запускать макрос по кнопке и выводить результат вверх листа отличное.


Сообщение отредактировал stasprv - Вторник, 15.11.2016, 21:16
 
Ответить
Сообщение
так подойдет?


K-SerJC, посмотрел алгоритм более внимательно. Всё-таки он работает немного не правильно. Наверное, я недостаточно понятно написал. Давайте попробую еще раз. Мне необходим номер пропуска машины, у которой при взвешивании соблюдается одновременно два условия: 1. есть скачек по модулю более 9 тн. между любыми интервалами (двумя соседними строчками). Без разницы в плюс или в минус
Например:
01,08,2016 03:48:21 Текущий вес: 37,140
01,08,2016 03:48:21 Текущий вес: 36,620 - разница в этом и следующем взвешивании более 9 тн.
01,08,2016 03:48:21 Текущий вес: 26,060

2. и зарегистрированный вес которой более 45 тн.
Например:
01,08,2016 03:47:51 Зарегистрированный вес: 61,160 - зарегистрированный вес более 45 тн.

Номер пропуска машины можно взять отсюда:
01,08,2016 03:47:51 Отсканирован пропуск "D26,1 961469" - отсюда необходимо взять номер пропуска

Взвешивания машин друг от друга разделены пустыми строками.

Ваше решение запускать макрос по кнопке и выводить результат вверх листа отличное.

Автор - stasprv
Дата добавления - 15.11.2016 в 19:39
Pelena Дата: Вторник, 15.11.2016, 21:16 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
stasprv, не надо цитировать посты целиком. Это нарушение Правил форума. Исправьте


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеstasprv, не надо цитировать посты целиком. Это нарушение Правил форума. Исправьте

Автор - Pelena
Дата добавления - 15.11.2016 в 21:16
Kuzmich Дата: Вторник, 15.11.2016, 21:18 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
Данные пропуска можно выделить в любом виде

Вот макрос, который выделяет значение пропуска в столбец F
[vba]
Код
Sub Report()
Dim FoundPropusk As Range
Dim FAdr As String
    Set FoundPropusk = Columns(1).Find("Отсканирован пропуск ", , xlValues, xlPart)
     If Not FoundPropusk Is Nothing Then
      FAdr = FoundPropusk.Address
      Do
         Cells(FoundPropusk.Row, 6) = Split(FoundPropusk, "Отсканирован пропуск ")(1)
       Set FoundPropusk = Columns(1).Find("Отсканирован пропуск ", After:=FoundPropusk)
      Loop While FoundPropusk.Address <> FAdr
     End If
End Sub
[/vba]
 
Ответить
Сообщение
Цитата
Данные пропуска можно выделить в любом виде

Вот макрос, который выделяет значение пропуска в столбец F
[vba]
Код
Sub Report()
Dim FoundPropusk As Range
Dim FAdr As String
    Set FoundPropusk = Columns(1).Find("Отсканирован пропуск ", , xlValues, xlPart)
     If Not FoundPropusk Is Nothing Then
      FAdr = FoundPropusk.Address
      Do
         Cells(FoundPropusk.Row, 6) = Split(FoundPropusk, "Отсканирован пропуск ")(1)
       Set FoundPropusk = Columns(1).Find("Отсканирован пропуск ", After:=FoundPropusk)
      Loop While FoundPropusk.Address <> FAdr
     End If
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 15.11.2016 в 21:18
K-SerJC Дата: Среда, 16.11.2016, 11:31 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013

Взвешивания машин друг от друга разделены пустыми строками.

в принципе не учел только это

тогда уточнение:
имеем в начале лист со строками нескольких взвешиваний, которые разделены пробелами, т.е. несколько диапазонов

в каждом отделенном диапазоне участвует только один пропуск, много строк текущий вес и может быть несколько зарегистрированных или только один вес зарегистрирован?

выбираем из диапазона строку отсканирован пропуск, выбираем от туда числовое значение пропуска
выводим строки
Пропуск
две строки между которыми разница >9
строку где зарегистрирован вес >45

и так по всему листу, по каждому диапазону взвешивания.
правильно понял?


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение

Взвешивания машин друг от друга разделены пустыми строками.

в принципе не учел только это

тогда уточнение:
имеем в начале лист со строками нескольких взвешиваний, которые разделены пробелами, т.е. несколько диапазонов

в каждом отделенном диапазоне участвует только один пропуск, много строк текущий вес и может быть несколько зарегистрированных или только один вес зарегистрирован?

выбираем из диапазона строку отсканирован пропуск, выбираем от туда числовое значение пропуска
выводим строки
Пропуск
две строки между которыми разница >9
строку где зарегистрирован вес >45

и так по всему листу, по каждому диапазону взвешивания.
правильно понял?

Автор - K-SerJC
Дата добавления - 16.11.2016 в 11:31
K-SerJC Дата: Среда, 16.11.2016, 11:57 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
запустил пакрос... type mismatch.


это из за вот:
[vba]
Код
Sub replacement()
    Columns("A:A").Select
      Selection.Replace What:=".", replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
[/vba]
точки в числовых выражениях в экселе зло!
исправленный файл вложил.
К сообщению приложен файл: 8150748.xlsm (49.9 Kb)


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Среда, 16.11.2016, 11:58
 
Ответить
Сообщение
запустил пакрос... type mismatch.


это из за вот:
[vba]
Код
Sub replacement()
    Columns("A:A").Select
      Selection.Replace What:=".", replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
[/vba]
точки в числовых выражениях в экселе зло!
исправленный файл вложил.

Автор - K-SerJC
Дата добавления - 16.11.2016 в 11:57
Udik Дата: Среда, 16.11.2016, 14:36 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
каждый весит более 1 Гб, я их копирую в xls на несколько листов,

Вот код, который непосредственно файл обрабатывает. Общий алгоритм такой: идет построчное считывание, из строк, содержащих Текущий вес формируется массив весов. Если зарегистрированный вес меньше или равен 45, переходим к следующему взвешиванию. Если больше, проверяем массив на пару с разницей 9. Нашли такую - вносим номер пропуска на лист.
[vba]
Код

OOption Explicit

Public Sub processF()
    Dim str1 As String, strPass As String
    Dim arr1(1 To 200) As Double
    Dim curIndex As Byte
    Dim fileToOpen, arr2
    Dim flagMass As Boolean, flgout As Boolean
    Dim arrStr(1 To 3) As String
    Dim rowCur As Long, i&
    
    arrStr(1) = "*Текущий вес*"
    arrStr(2) = "*Зарегистрированный вес*"
    arrStr(3) = "*Отсканирован пропуск*"
    rowCur = 1
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Выбрать файл" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Text files", "*.log", 1 'добавляем возможность выбора текстовых log файлов
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию
        .InitialFileName = ThisWorkbook.Path & "\" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)If fileToOpen = False Then Exit Sub
        If .Show = False Then Exit Sub: If .SelectedItems.Count = 0 Then Exit Sub
        fileToOpen = .SelectedItems(1)
        Open fileToOpen For Input As #1
    End With
    Worksheets("out").UsedRange.ClearContents
    Do Until flgout
        On Error Resume Next
        Line Input #1, str1
        If EOF(1) Then str1 = ""
        On Error GoTo 0
        If str1 Like arrStr(2) Then
            arr2 = Split(str1, " ")
            If Val(arr2(UBound(arr2))) < 45 Then
                Do Until str1 = "" Or EOF(1)
                    Line Input #1, str1
                Loop
                Erase arr1
                curIndex = 0
                strPass = ""
                flagMass = False
            Else
                flagMass = True
                
            End If
            ElseIf str1 Like arrStr(3) Then
            arr2 = Split(str1, " ")
            strPass = arr2(UBound(arr2))
            strPass = Replace(strPass, Chr(34), "")
            ElseIf str1 Like arrStr(1) Then
            curIndex = curIndex + 1
            arr2 = Split(str1, " ")
            arr1(curIndex) = Val(arr2(UBound(arr2)))
            ElseIf str1 = "" Then
            If flagMass Then
                For i = 2 To curIndex
                    If Abs(arr1(i) - arr1(i - 1)) > 9 Then
                        Worksheets("out").Cells(rowCur, 1).Value = strPass
                        rowCur = rowCur + 1
                        Exit For
                    End If
                Next i
            End If
            Erase arr1
            flagMass = False
            curIndex = 0
            strPass = ""
            If EOF(1) Then flgout = True
            
        End If
    Loop
    Close #1
End Sub
[/vba]
К сообщению приложен файл: 8188065.xlsm (27.1 Kb)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Среда, 16.11.2016, 14:52
 
Ответить
Сообщение
каждый весит более 1 Гб, я их копирую в xls на несколько листов,

Вот код, который непосредственно файл обрабатывает. Общий алгоритм такой: идет построчное считывание, из строк, содержащих Текущий вес формируется массив весов. Если зарегистрированный вес меньше или равен 45, переходим к следующему взвешиванию. Если больше, проверяем массив на пару с разницей 9. Нашли такую - вносим номер пропуска на лист.
[vba]
Код

OOption Explicit

Public Sub processF()
    Dim str1 As String, strPass As String
    Dim arr1(1 To 200) As Double
    Dim curIndex As Byte
    Dim fileToOpen, arr2
    Dim flagMass As Boolean, flgout As Boolean
    Dim arrStr(1 To 3) As String
    Dim rowCur As Long, i&
    
    arrStr(1) = "*Текущий вес*"
    arrStr(2) = "*Зарегистрированный вес*"
    arrStr(3) = "*Отсканирован пропуск*"
    rowCur = 1
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Выбрать файл" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Text files", "*.log", 1 'добавляем возможность выбора текстовых log файлов
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию
        .InitialFileName = ThisWorkbook.Path & "\" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)If fileToOpen = False Then Exit Sub
        If .Show = False Then Exit Sub: If .SelectedItems.Count = 0 Then Exit Sub
        fileToOpen = .SelectedItems(1)
        Open fileToOpen For Input As #1
    End With
    Worksheets("out").UsedRange.ClearContents
    Do Until flgout
        On Error Resume Next
        Line Input #1, str1
        If EOF(1) Then str1 = ""
        On Error GoTo 0
        If str1 Like arrStr(2) Then
            arr2 = Split(str1, " ")
            If Val(arr2(UBound(arr2))) < 45 Then
                Do Until str1 = "" Or EOF(1)
                    Line Input #1, str1
                Loop
                Erase arr1
                curIndex = 0
                strPass = ""
                flagMass = False
            Else
                flagMass = True
                
            End If
            ElseIf str1 Like arrStr(3) Then
            arr2 = Split(str1, " ")
            strPass = arr2(UBound(arr2))
            strPass = Replace(strPass, Chr(34), "")
            ElseIf str1 Like arrStr(1) Then
            curIndex = curIndex + 1
            arr2 = Split(str1, " ")
            arr1(curIndex) = Val(arr2(UBound(arr2)))
            ElseIf str1 = "" Then
            If flagMass Then
                For i = 2 To curIndex
                    If Abs(arr1(i) - arr1(i - 1)) > 9 Then
                        Worksheets("out").Cells(rowCur, 1).Value = strPass
                        rowCur = rowCur + 1
                        Exit For
                    End If
                Next i
            End If
            Erase arr1
            flagMass = False
            curIndex = 0
            strPass = ""
            If EOF(1) Then flgout = True
            
        End If
    Loop
    Close #1
End Sub
[/vba]

Автор - Udik
Дата добавления - 16.11.2016 в 14:36
stasprv Дата: Среда, 16.11.2016, 19:11 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
в каждом отделенном диапазоне участвует только один пропуск, много строк текущий вес и может быть несколько зарегистрированных или только один вес зарегистрирован?


Может быть несколько строк в одном взвешивании "Зарегистрирован вес", но они будут идентичны, т.е. зарегистрирован один и тот же вес

правильно понял?

Все остальное абсолютно верно
 
Ответить
Сообщение
в каждом отделенном диапазоне участвует только один пропуск, много строк текущий вес и может быть несколько зарегистрированных или только один вес зарегистрирован?


Может быть несколько строк в одном взвешивании "Зарегистрирован вес", но они будут идентичны, т.е. зарегистрирован один и тот же вес

правильно понял?

Все остальное абсолютно верно

Автор - stasprv
Дата добавления - 16.11.2016 в 19:11
stasprv Дата: Среда, 16.11.2016, 19:14 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вот код, который непосредственно файл обрабатывает.


Спасибо за Ваш труд, но, к сожалению, когда открываю файл и нажимаю на кнопку ничего не происходит. Через разработчик запустил макрос, после выбора файла выдается ошибка "Run-time error: 32809. Application defined or object defined error". Вероятно, я что-то делаю не так?
 
Ответить
Сообщение
Вот код, который непосредственно файл обрабатывает.


Спасибо за Ваш труд, но, к сожалению, когда открываю файл и нажимаю на кнопку ничего не происходит. Через разработчик запустил макрос, после выбора файла выдается ошибка "Run-time error: 32809. Application defined or object defined error". Вероятно, я что-то делаю не так?

Автор - stasprv
Дата добавления - 16.11.2016 в 19:14
stasprv Дата: Среда, 16.11.2016, 19:18 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
точки в числовых выражениях в экселе зло!
исправленный файл вложил.


Спасибо, всё работает, только отбираются машины с зарегистрированным весом менее 45 тн.
 
Ответить
Сообщение
точки в числовых выражениях в экселе зло!
исправленный файл вложил.


Спасибо, всё работает, только отбираются машины с зарегистрированным весом менее 45 тн.

Автор - stasprv
Дата добавления - 16.11.2016 в 19:18
Udik Дата: Среда, 16.11.2016, 20:29 | Сообщение № 17
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
"Run-time error: 32809. Application defined or object defined error". Вероятно, я что-то делаю не так?

Загадка, сейчас проверил файл с сайта - нормально отработал. А на какой строке ошибка вылетает?


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
Сообщение
"Run-time error: 32809. Application defined or object defined error". Вероятно, я что-то делаю не так?

Загадка, сейчас проверил файл с сайта - нормально отработал. А на какой строке ошибка вылетает?

Автор - Udik
Дата добавления - 16.11.2016 в 20:29
K-SerJC Дата: Четверг, 17.11.2016, 09:13 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 487
Репутация: 86 ±
Замечаний: 0% ±

Excel 2013
Спасибо, всё работает, только отбираются машины с зарегистрированным весом менее 45 тн.

проверил, отбирает зарегистрированные >45
и текущие с разницей >9

добавил номер пропуска вычисляет
К сообщению приложен файл: 0272445.xlsm (60.9 Kb)


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение
Спасибо, всё работает, только отбираются машины с зарегистрированным весом менее 45 тн.

проверил, отбирает зарегистрированные >45
и текущие с разницей >9

добавил номер пропуска вычисляет

Автор - K-SerJC
Дата добавления - 17.11.2016 в 09:13
stasprv Дата: Четверг, 17.11.2016, 19:05 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
проверил, отбирает зарегистрированные >45
и текущие с разницей >9

Наверное, я не совсем понятно написал. Необходимо, чтобы одновременно выполнялись оба условия в одном взвешивании. Машина с весом более 45 тн. и текущее с разницей 9 тн. Было бы отлично, если бы номер пропуска выводился шестизначный (сейчас 5 знаков)
 
Ответить
Сообщение
проверил, отбирает зарегистрированные >45
и текущие с разницей >9

Наверное, я не совсем понятно написал. Необходимо, чтобы одновременно выполнялись оба условия в одном взвешивании. Машина с весом более 45 тн. и текущее с разницей 9 тн. Было бы отлично, если бы номер пропуска выводился шестизначный (сейчас 5 знаков)

Автор - stasprv
Дата добавления - 17.11.2016 в 19:05
stasprv Дата: Четверг, 17.11.2016, 19:07 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Загадка, сейчас проверил файл с сайта - нормально отработал. А на какой строке ошибка вылетает?

а как это определить? Всплывает просто окно с ошибкой и всё
 
Ответить
Сообщение
Загадка, сейчас проверил файл с сайта - нормально отработал. А на какой строке ошибка вылетает?

а как это определить? Всплывает просто окно с ошибкой и всё

Автор - stasprv
Дата добавления - 17.11.2016 в 19:07
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск в массиве с определенными параметрами (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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