Страницы: 1
RSS
Массив, как перечень исключений для конструкции If..Then
 
Здравствуйте!
Помогите, пожалуйста, с решением следующей проблемы:
Дано: Книга "ArrayTest.xls" с 2-мя листами: "Список" и "Сводная". Лист "Список" содержит перемешанные названия месяцев, дней недели и числа (от 1 до 10).
Задача: Перенести в лист "Сводная" все данные, НЕ удовлетворяющие условиям, перечисленным в массиве.
В данном случае массив содержит дни недели. Т.о. в лист "Сводная" должно попасть всё, кроме дней недели.
Обратная задача (с переносом только дней недели) решается...а вышеупомянутая не дает ожидаемого результата.
Привожу свой код, подскажите, пожалуйста, в чем ошибка и почему обратная задача работает (...If IndexCell.Value = MyArray(Ai) Then....)?
Код
Sub GetMonthsFromList()
Dim Svod As Object
Dim IndexCell As Range
Dim i As Integer
Dim MyArray() As Variant
Dim Ai As Variant
Set Svod = ThisWorkbook.Sheets("Сводная")
MyArray = Array("Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье")
ThisWorkbook.Sheets(1).Activate
i = 1
For Each IndexCell In Range("A1:A29")
    For Ai = 0 To 6
        If IndexCell.Value <> MyArray(Ai) Then
                Svod.Cells(i, 1).Value = IndexCell.Value
                i = i + 1
        End If
    Next Ai
Next IndexCell
Erase MyArray
End Sub
Данная задача умышлено примитивизирована для акцента на вопросе об использовании массива именно таким способом. На деле, огромное кол-во книг и листов с информацией инженерно-технического характера, спецификаций и пр...
На стороннем форуме сторожила дал хороший совет (спасибо ему) использовать словарь (этот вопрос я уже начал изучать). Но, неужели нельзя обойтись "родным" массивом, не используя подключения к библиотекам.
Изменено: Normanjazz - 25.04.2018 21:13:40
 
кросс
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх