Я использую следующую функцию, чтобы просмотреть столбец 1 таблицы (rngSearch
) и вернуть соответствующее значение в столбце 2, в основном отражая функциональность VLOOKUP
. Обычно это работает как задумано, за исключением случаев, когда это не так. Иногда он возвращает vbNullString
вместо желаемого строкового значения.
Function get_short_string(rngSearch As Range, strSearch As String) As String
get_short_string = vbNullString
For i = 1 To rngSearch.Rows.Count
If LCase(rngSearch(1)(i)) = LCase(strSearch) Then
get_short_string = rngSearch(2)(i)
Exit Function
End If
Next i
End Function
Я прошел функцию и сузил ее до этой строки:
get_short_string = rngSearch(2)(i)
Когда я вхожу ? rngSearch(2)(i)
в ближайшем окне в тот момент я получаю желаемую строку вывода. Когда я выполняю строку, get_short_string
получает vbNullString
. По крайней мере, это то, о чем я думаю, когда я наводю указатель мыши на get_short_string
после выполнения строки, всплывающая подсказка показывает get_short_string =
без пустой строки ""
. Я также пробовал rngSearch(2)(i).Value
и rngSearch(2)(i).Value2
с тем же результатом.
РЕДАКТИРОВАТЬ: Спасибо за ответы. Кажется, проблема не в коде, а в обрабатываемых строках. Я заменим эту пользовательскую функцию на VlookUp и продолжу ее изучение.
EDIT2: здесь запрошен образец таблицы в ее первоначальной немецкой форме:
+----------------------------------------------------------+------------------+
| Internes Projekt nach CRM | Kurzname |
+----------------------------------------------------------+------------------+
| Urlaub | geplante Abwesenheit 2020 | URLAUB |
| Interne Projekte 2020 | INTERNE PROJEKTE |
| Akquise 2020 | AKQUISE |
| Unterstützung (nicht fakturierbar) anderer Projekte 2020 | andere |
| Verwaltung | Arbeitsorganisation 2020 | VERWALTUNG |
| Interne Projekte 2019 | INTERNE PROJEKTE |
| Unterstützung Team (intern) | andere |
+----------------------------------------------------------+------------------+
При поиске точной строки в строка 2 Urlaub | geplante Abwesenheit 2020
, код идентифицирует строку 2 правильно. Когда я использую непосредственное окно ? rngSearch(2)(i)
, оно выводит URLAUB
, но функция возвращает пустую переменную.