Найти номер столбца ячейки, содержащей значение цифры c, используя Excel VBA - PullRequest
0 голосов
/ 31 марта 2020

В моем листе Excel значение ячейки A1 равно 1000, тогда как значение ячейки B1 равно 10000.

Я пытаюсь найти столбец №. ячейки, которая содержит «1000».

Колонка №. я хочу получить 1 (т. е. ячейку A1), но я получаю вывод как 2 с кодом ниже (ссылаясь на значение 10000 в ячейке B1). С другой стороны, в ячейке B1, если я заменю 10000, скажем, 10100, я получу вывод следующего кода как 1.

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

*

Sub Find_Number()
Dim Find As Range
Set Find = Range(Cells(1, 1), Cells(1, 5)).Find("1000")
Debug.Print Find.Column
End Sub

*

1 Ответ

2 голосов
/ 31 марта 2020

Попробуйте это. При использовании Find всегда желательно указывать параметры, так как они могут иметь неожиданные настройки. Указав after в качестве последней ячейки диапазона, поиск будет начинаться в первой ячейке, а не пропущен.

И убедитесь, что вы нашли что-то перед тем, как продолжить, чтобы избежать ошибок.

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

(Также мне не нравится использовать Find в качестве имени переменной, даже если это разрешено.)

Sub Find_Number()

Dim rFind As Range

With Range(Cells(1, 1), Cells(1, 5))
    Set rFind = .Find(what:=1000, after:=.Cells(.Cells.Count), LookAt:=xlPart, _
                     SearchDirection:=xlNext, MatchCase:=False) 'might want to specify whole rather than part
    If Not rFind Is Nothing Then Debug.Print rFind.Column 'avoid error if not found
End With

'alternative
'Dim v As Variant

'v = Application.Match(1000, Range(Cells(1, 1), Cells(1, 5)), 0)
'If IsNumeric(v) Then Debug.Print v

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