Использование поиска в следующей доступной строке в Excel VBA - PullRequest
1 голос
/ 22 мая 2011

Я пытаюсь реализовать функцию поиска в Excel Vba.У меня нет кода для обмена, потому что я не знаю, как начать реализацию.

При открытии рабочей книги я хочу использовать VBA для ввода сегодняшней даты в следующую доступную строку в столбце A, которую я сейчас работаю.Однако в этот момент в столбце B той же строки я нахожу курс акций в моей таблице, где J2 - дата, а J3 - цена акции.

Мне кажется, что мне нужна формула, в которой я могу найти дату, которую я только что добавил в эту таблицу, и затем получить цену, относящуюся к этой дате.Я очень хорошо понимаю Vlookups в Excel;Я просто понимаю, как использовать поиск здесь для каждой следующей доступной строки.

Вот мой код для дат:

Dim rnum as integer

rnum = sheet17.usedrange.cells.rows.count +1

sheet17.cells(rnum, 1).value = date

Я ищу функцию поиска относительно (rnum, 2) в качестве следующей доступной строки.

Ответы [ 2 ]

2 голосов
/ 22 мая 2011

Если вы хотите жестко закодировать это, это будет

sheet17.cells(rnum, 2).formula = "=vlookup(" & sheet17.cells(rnum, 1).address(false,false,xlA1) & ", $J:$K, 2, false)"

Если вы предпочитаете использовать любую формулу из предыдущей строки,

sheet17.range(sheet17.cells(rnum-1, 2), sheet17.cells(rnum, 2)).FillDown
0 голосов
/ 22 мая 2011

Я предполагаю, что когда вы говорите «курс запаса в таблице», вы подразумеваете «курс запаса в рабочем листе», а также предполагаете, что значения в столбце J содержат курсы запаса для того же запаса.Другими словами, вы подходите только для даты в этом столбце, а не для биржевого символа И даты.(Пожалуйста, дайте мне знать, если у меня неверные предположения).

Это значит, что вы можете попробовать следующую формулу в столбце B:

=IF(A50<>"",INDEX(J:J,MATCH(A50,StockSheet!J:J,0) +1),"")

В этом случае формула находится вячейка B50 и предполагает, что новая дата в A50.Он говорит учитывая значение даты в ячейке J + n, укажите значение в ячейке J + n + 1 .

Я добавил небольшую проверку проверки, чтобы увидеть, было ли значение вA50, но вы можете пойти глубже, чем это.

Кроме того, если вы хотите сделать значение в B50 статическим, просто используйте следующий код:

Sub mySub()
    Dim x As Range 'I assume this range will be for your currentm, working worksheet

    Set x = Range("B50", "B50")
    x.Formula = "=IF(A50<>"""",INDEX(J:J,MATCH(A50,Codes!J:J,0) +1),"""")"
    x = x.Value
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...