Есть ли способ найти значение в таблице Excel с двумя или более информацией? - PullRequest
0 голосов
/ 28 января 2020

Я не знаю, как это объяснить лучше, но я извлекаю отчет в формате xls, в котором записывается предложение от компаний во время торгов. Отчет содержит три поля:

Значение / Компания / Время

Я хочу извлечь первое предложение от компании, но я столкнулся со следующей проблемой: В отчете не учитываются дни только время, поэтому, если компания отправит мне предложение в 2019-01-28 в 22:00 и после этого отправит мне еще одно предложение в 2019-01-29 в 21:00, в моем отчете сначала появится второе предложение.

Я делал это вручную, потому что в этом случае невозможно использовать vlookup.

Я тоже пытался с VBA, что-то вроде этого Чтобы определить диапазон, в котором находятся данные:

    tableRowi = tableI.Row  'Linha de início da Tabela de Lances
    Set tableF = Range("A1:Z1000").Find(What:="Relatório de Chat do Leilão", LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False)
    Set tableF2 = Range("A1:Z1000").Find(What:="Usuários Conectados ao Monitor do Leilão", LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False)
    If tableF Is Nothing Then
        tableRowF = tableF2.Row
    Else
        tableRowF = tableF.Row
    End If 

и это, чтобы скопировать данные, которые я хочу:

 Set propI = Range("A" & tableRowi - 2 & ":Z1000").Find(What:="Valor", LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 'Início da tabela de classificação
    propCol = propI.Column 'Coluna com valores das propostas
    Set empI = Range("A" & tableRowi - 2 & ":Z1000").Find(What:="Empresa", LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 'Início da tabela de classificação
    empCol = empI.Column 'Coluna com nomes das empresas que deram lances

    'Copiando os dados
    Dim arrayLance() As Variant
    ReDim arrayLance(0 To nEmpresas - 1) 'Propostas iniciais
    For i = 0 To nEmpresas - 1
        'Set Emp = Range("A1:Z1000").Find(What:=arrayEmp(i), LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 'Início da tabela de classificação
        arrayLance(i) = WorksheetFunction.Index(Range("A1:Z1000"), tableRowi - 1 + WorksheetFunction.Match(arrayEmp(i), Range(Cells(tableRowi, empCol), Cells(tableRowF, empCol)), 0), propCol)
    Next i

В этом коде я устанавливаю столбцы, в которых находятся данные, и копирую их, используя массивы, но снова я сталкиваюсь с той же проблемой, что и захват кода первая информация (ценность) от Компании, которая не обязательно является вашим первым предложением.

Я подумал использовать все oop, но я не могу структурировать это в своем уме.

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