Функция поиска Excel-VBA не рассматривает первую строку столбца

Я искал по всему Интернету простой способ найти номера строк и столбцов определенных строк или значений. К моему удивлению, я не нашел того, на что я надеялся, поэтому решил написать свою собственную функцию. Поскольку я довольно новичок, я сталкиваюсь с некоторыми проблемами.

Итак, в этом примере моя цель состоит в том, чтобы закодировать функцию, которую я всегда могу использовать в любом подмножестве VBA, чтобы найти номер строки или столбца. На данный момент я закодировал следующую функцию, чтобы найти столбец:

Function Find(SearchRange As String, Word As String) As Long Dim found As Range Set found = ActiveSheet.Columns(SearchRange).Find(what:=Word, LookIn:=xlValues, lookat:=xlWhole) If Not found Is Nothing Then Find = found.Row End If End Function 

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

 Sub FindTest() Cells(1, 2) = Find("A", "C") End Sub 

Поэтому, если у меня есть следующая таблица (столбец A):

В
С
D
Е

Результат, который я должен получить, – «3». Это работает, и я доволен этим. Однако, если я введу другой «С» в таблицу, например

С
В
С
D
Е

Результат, который я получаю, по-прежнему «3», а не «1». Если я изменю таблицу на

С
В

D
Е

Результат, который я получаю, – «1».

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

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

 After:=.Cells(.Cells.Count) 

в определение «Найти», однако, если я обновляюсь до

 Set found = ActiveSheet.Columns(SearchRange).Find(what:=Word, After:=.Cells(.Cells.Count), LookIn:=xlValues, lookat:=xlWhole) 

Я получаю «Ошибка компиляции: неверная или неквалифицированная ссылка».

На этом этапе я действительно отчаялся. Есть ли кто-нибудь, кто может помочь мне в этом?

Большое спасибо!

Попробуй это:

 Sub findstr() Dim rng As Range Set rng = ActiveSheet.UsedRange.Find("C", , xlValues, xlWhole) MsgBox rng.Row '--->this will give you row MsgBox rng.Column '--->this will give you column End Sub 

EDIT: внесены изменения в функцию Find где вы пытались использовать After:=.Cells(.Cells.Count)

 Function Find(SearchRange As String, Word As String) As Long Dim found As Range With Sheets("Sheet1").Range(SearchRange & ":" & SearchRange) Set found = ActiveSheet.Columns(SearchRange).Find(what:=Word, After:=.Cells(.Cells.Count), LookIn:=xlValues, lookat:=xlWhole) End With If Not found Is Nothing Then Find = found.Row End If End Function 
  • Ошибка VLOOKUP с выводом формулы с помощью Right (), Len () и Find ()
  • Excel - поиск и замена нескольких слов
  • Найти и если заявления в Excel VBA
  • выберите случай, в соответствии с поиском текста
  • Как получить адрес ячейки от функции Найти в excel vba
  • Возвращаемый индекс элемента в массиве Excel VBA
  • Поиск значения, а затем разворачивание выбранных ячеек в столбце
  • Excel VBA Macro: копирование относительной ячейки на другой рабочий лист
  • Excel Найти и сравнить значения по нескольким столбцам, если условие выполнено
  • Как создать поиск в excel в DataGridView?
  • найти ячейку со специфическим текстом, несколькими вхождениями и прошлой активной ячейкой во всех ячейках, содержащих определенный текст
  • Interesting Posts

    Как экспортировать html-данные в Excel с помощью C #?

    Функция Excel Excel CountIf работает только с отладкой

    Удалить текст Wrap из запроса доступа

    Поиск книги Excel и вывод результатов на другом листе или отчете с использованием VBA

    Удалить столбец Excel с определенным именем через скрипт

    Попытка автоматизировать код excel vba на каждый час. Я пытался дать время ожидания, но через день или около того он начинает отставать

    Формула Excel для отображения нескольких значений с помощью Index-Match

    Скрытие столбцов на основе значения ячейки

    Найти и заменить строки из одного листа в другой

    Переменные столбца в Excel?

    выберите файлы .xlsx через всплывающее окно и скопируйте данные из них и вставьте их после последней используемой строки в цикле

    Изменение значения ячейки через VBA не запускает макрос, связанный с ячейкой

    Excel VBA: условное форматирование ячеек sheet1 из значений sheet2 в excel 2007

    ChartObjects («Диаграмма»). Высота Создание повторяющейся диаграммы

    Excel VBA – Loop Transpose

    Давайте будем гением компьютера.