powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как быстро сравнить массив с переменной не прибегая к циклам?
9 сообщений из 9, страница 1 из 1
как быстро сравнить массив с переменной не прибегая к циклам?
    #37533749
jack100500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
собственно, в теме весь вопрос.

можно конечно сравнивать через циклы
Код: plaintext
for..next
но хотелось бы через впр, например.

тут моя попытка. но почему-то ругатеся

на эту строчку
Код: plaintext
WorksheetFunction.HLookup(opex_total.Cells(i, j).Value, mass(),  1 , False) = "#Н/A"



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  
Sub summary()
     Dim i As Long
     Dim j As Long
     Dim k As Long
     Dim n As Long
     Dim rowmax As Long
     Dim opex_total As Object, basebookname As String
     basebookname = ThisWorkbook.Name
     Set opex_total = Workbooks(basebookname).Sheets("OPEX_TOTAL")
   j =  6 
   rowmax = Cells(opex_total.Rows.Count, j).End(xlUp).Row
   n = rowmax -  6 
   Dim mass(n) As Variant
  k =  1 
  For i =  7  To rowmax
    If WorksheetFunction.HLookup(opex_total.Cells(i, j).Value, mass(),  1 , False) = "#Н/A" Then
      mass(k) = opex_total.Cells(i, j).Value
      k = k +  1 
    End If
  Next
End Sub
...
Рейтинг: 0 / 0
как быстро сравнить массив с переменной не прибегая к циклам?
    #37533807
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос, говоришь, в сабже? а какое отношение в к вопросу в сабже имеет весь этот бред в постинге? на ещё на эксельном ВБА, а не на VB?
...
Рейтинг: 0 / 0
как быстро сравнить массив с переменной не прибегая к циклам?
    #37533858
jack100500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

здесь вопросы задают как по вб так и вба, так и по экселю, насколько мне известно.
а выразить своё "фе" всегда можно. только толку? код был постанут для того чтоб была видна картина всего кода, дабы не было вопросов "объявлена ли" и тд. и тп. так что попрошу придержать своё мнение при себе, если нет желания дать дельный совет по вопросу.
...
Рейтинг: 0 / 0
как быстро сравнить массив с переменной не прибегая к циклам?
    #37533946
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jack100500 но почему-то ругатесяmass нужно писать без скобок.
...
Рейтинг: 0 / 0
как быстро сравнить массив с переменной не прибегая к циклам?
    #37534002
jack100500
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

не. не помогло. тут что-то с типами объектов + видно не хочет воспринимать массив как range .

поясните невежде чем принципиально отличаются методы

Код: plaintext
1.
Application.Hlookup()
WorksheetFunction.Hlookup()
...
Рейтинг: 0 / 0
как быстро сравнить массив с переменной не прибегая к циклам?
    #37534018
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaВопрос, говоришь, в сабже? а какое отношение в к вопросу в сабже имеет весь этот бред в постинге? на ещё на эксельном ВБА, а не на VB? Модератор: поаккуратнее, прошу тебя, все в пределах правил форума
...
Рейтинг: 0 / 0
как быстро сравнить массив с переменной не прибегая к циклам?
    #37534062
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proвсе в пределах правил форума
Название этого подраздела и наличие (причём именно в разделе "Программирование") подраздела "Microsoft Office" (а особенно - наполнение раздела) заставляет думать иначе. VB и VBA - это, как говорят в Одессе, "две большие разницы".

Может, есть смысл в таком случае подумать о переименовании разделов в "VB/VBA/VBS" и "Работа в Microsoft Office" соответственно?
...
Рейтинг: 0 / 0
как быстро сравнить массив с переменной не прибегая к циклам?
    #37534078
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jack100500

1) Замените
Код: plaintext
Dim opex_total As Object
на
Код: plaintext
Dim opex_total As WorkSheet
Но это так, к слову...

2) jack100500почему-то ругатеся на эту строчку
Код: plaintext
WorksheetFunction.HLookup(opex_total.Cells(i, j).Value, mass(),  1 , False) = "#Н/A"

Попробуйте для начала разбить её на две. В первой строке получите первый аргумент функции в переменную, во второй уже обратитесь к функции. Думаю, сразу станет понятно, откуда ноги растут... особенно если потрассировать...

PS. Скобки у mass() необязательны.
...
Рейтинг: 0 / 0
как быстро сравнить массив с переменной не прибегая к циклам?
    #37534164
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaShocker.Proвсе в пределах правил форума

Название этого подраздела и наличие (причём именно в разделе "Программирование") подраздела "Microsoft Office" (а особенно - наполнение раздела) заставляет думать иначе. VB и VBA - это, как говорят в Одессе, "две большие разницы".Может, есть смысл в таком случае подумать о переименовании разделов в "VB/VBA/VBS" и "Работа в Microsoft Office" соответственно?
Для подобный вопросов прошу в "Обсуждение нашего сайта", прошу не замусоривать топик.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как быстро сравнить массив с переменной не прибегая к циклам?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]