Excel VBA не будет работать для больших номеров столбцов - PullRequest
0 голосов
/ 10 июля 2019

К сожалению, я не очень хорошо разбираюсь в кодировании VBA, и это пример кода, который я нашел в Интернете.Проблема, с которой я столкнулся, заключается в том, что код, похоже, не любит очень большие номера столбцов.когда «LookupRange As Range» становится A1: A10000, VBA больше не работает должным образом.Например, код

=singlecellextract(J1,D1:E5,2)

работает отлично, но

=singlecellextract(J1,D1:E12000,2)

возвращает # ЗНАЧЕНИЕ!ошибка

Вот код VBA, который я использовал для функции

Function SingleCellExtract(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
  Dim i As Long
  Dim result As String

  For i = 1 To LookupRange.Columns(1).Cells.Count
        If LookupRange.Cells(i, 1) = Lookupvalue Then
             result = result & " " & LookupRange.Cells(i, ColumnNumber) & ","
       End If
  Next i

       SingleCellExtract = Left(result, Len(result) - 1)
  End Function

Есть ли вероятность того, что этот код будет работать с большим количеством нумерованных столбцов или, что еще лучше, работать с входными данными, такими как A: A?Большое спасибо.

edit: я изменил двойное на длинное, но, похоже, это не повлияет на результат

1 Ответ

0 голосов
/ 10 июля 2019

Формула работает нормально (хотя и медленно), пока нет ошибок.Следующая настройка позволит игнорировать ошибки.

Function SingleCellExtract(Lookupvalue As String, _
                            LookupRange As Range, _
                            ColumnNumber As Integer)
  Dim i As Long
  Dim result As String

  For i = 1 To LookupRange.Columns(1).Cells.Count
        If Not (IsError(LookupRange.Cells(i, 1)) Or _
            IsError(LookupRange.Cells(i, ColumnNumber))) Then
            If LookupRange.Cells(i, 1) = Lookupvalue Then
                 result = result & " " & LookupRange.Cells(i, ColumnNumber) & ","
            End If
        End If
  Next i

       SingleCellExtract = Left(result, Len(result) - 1)
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...