Функция Excel CELL - INDEX - MATCH использует преобразование в VBA - PullRequest
0 голосов
/ 14 октября 2018

У меня есть список возрастающих дат.Я использую следующую формулу для возврата ссылки на ячейку:

=CELL("address",INDEX(A2:A14,MATCH(D1,A2:A14,1)))

Эта формула дает мне результат, который, например, при поиске 1/2/2017 возвращает ссылку на ячейку $A $ 6.В то время как поиск за 30.12.2016 возвращает ссылку на ячейку в размере $ A $ 4.

Как бы я достиг того же результата, используя VBA, при этом возвращая значение следующей даты в списке, если дата поиска превышаетпредыдущая дата в списке и другая дата, превышающая дату поиска, существуют?

 Dates                 1/2/2017
  12/27/2016              $A$6
  12/28/2016
  12/29/2016
  1/1/2017
  1/2/2017
  1/3/2017
    ...

1 Ответ

0 голосов
/ 15 октября 2018

Если я понял ваш вопрос, у меня есть альтернатива для вас.Я проверил этот код и работает нормально.

У меня есть список возрастающих дат от A2 до A14. Я использую ячейки (1,4) [на листе D1] в качестве входных данных для сравнения в списке.Результат сравнения в ячейки (2,4) [в листе D2]

т.е. мой список от А2 до А14

12/27/2016
12/28/2016
12/29/2016 
01/01/2017 
01/02/2017 
01/03/2017 
01/04/2017
01/05/2017 
01/06/2017 
01/07/2017 
01/08/2017 
01/09/2017 
01/10/2017

в ячейки (1,4) я написал01/01/2017

выходной макрос находится в ячейках (2,4) и составляет: $ A $ 9

Если я напишу 01/11/2017, результат будет $ A $ 14

Sub test()
Dim i, start, finish As Integer
Dim myDate,output As Date
i = 0
start = 2
finish = 14
myDate = Cells(1, 4) ' my input - cells(2,4) is output

For i = finish To start Step -1
    If (i = start) Then
        Cells(i, 1).Activate 'cell where is "my date"
        Cells(2, 4) = ActiveCell.Address ' get the address -output
        'Exit For
    End If
    If myDate >= Cells(i, 1) Then 
        Cells(i, 1).Activate 'cell where is "my date"
        Cells(2, 4) = ActiveCell.Address ' get the address -output
        Exit For
    End If
Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...