Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 16:33   #11
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Marchuk Посмотреть сообщение
Код:
Dim i As Long
Благодарю, даже не обратил внимание на Integer

1. заметил, что Vb не любит много переносов _
пишит too many continuations
лекарство есть?
можно ли условия поиска для case is вложить в переменную?

2. также хотелось, реализовать автоматический импорт файла txt и
выполнения макроса после этого.

Последний раз редактировалось mistx; 30.03.2009 в 16:41.
mistx вне форума Ответить с цитированием
Старый 30.03.2009, 17:04   #12
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
заметил, что Vb не любит много переносов _
пишит too many continuations
лекарство есть?
можно ли условия поиска для case is вложить в переменную?
А сколько Вы поставили переносов?

В любом случае, можно записать код иначе.
Если бы Вы привели пример кода, уже получили бы готовое решение.
EducatedFool вне форума Ответить с цитированием
Старый 30.03.2009, 17:30   #13
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А сколько Вы поставили переносов?

В любом случае, можно записать код иначе.
Если бы Вы привели пример кода, уже получили бы готовое решение.
организации привожу в кратком виде.
они импортируется вместе с ИНН и другими данными.
то есть "монтажзавод ИНН 3453634564 КПП 345634563456 ЛС 097869485769" и.т.д.
организаций может быть в каждом условии около 25-50

на 21 переносе получил too many continuations
Sub net()
Dim i As Long
For i = 2 To 38454
Select Case Cells(i, 1)
Case Is = "Монтажзавод", _
"'энергосервис", _
"'сибхимонтаж", _
......
.....
.....
"'эльдорадо"
Cells(i, 17) = "за услуги"
End Select
Next i
End Sub

Последний раз редактировалось mistx; 30.03.2009 в 17:33.
mistx вне форума Ответить с цитированием
Старый 30.03.2009, 17:39   #14
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот несколько вариантов записи:
Код:
Sub net()
    Dim i As Long
    For i = 2 To 38454

        Select Case Cells(i, 1)
            Case "Монтажзавод", "энергосервис", "сибхимонтаж", "эльдорадо": Cells(i, 17) = "за услуги"
        End Select

        Select Case Cells(i, 1)
            Case "Монтажзавод", "энергосервис": Cells(i, 17) = "за услуги"
            Case "сибхимонтаж", "эльдорадо": Cells(i, 17) = "за услуги"
        End Select

        Select Case Cells(i, 1)
            Case "Монтажзавод", "энергосервис"
                Cells(i, 17) = "за услуги"
            Case "сибхимонтаж", _
                 "эльдорадо"
                Cells(i, 17) = "за услуги"
        End Select
    Next i
End Sub
Переносы в данном случае абсолютно не нужны (тем более 20 штук)

Проще это сделать не макросом, а формулами.
Ну а лучше предусмотреть по небольшому списку значений (в ячейках где-нибудь в свободном месте листа) для каждого из возможных значений Cells(i, 17), и макрос (или формула) будет гораздо короче...
EducatedFool вне форума Ответить с цитированием
Старый 30.03.2009, 17:53   #15
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

Спасибо за быстрый ответ.
могу ли я создать несколько Case? не отразится это на работе в целом?
например
Case "Монтажзавод": Cells(i, 17) = "за услуги"
Case "энергосервис": Cells(i, 17) = "за услуги"
Case "сибхимонтаж": Cells(i, 17) = "за услуги"
....
...

у меня одна организация имеет следующий вид
"Школа N 13, ИНН 456456765, л/с 56756756756 в УФК по Свердловской области (Администрация г. Екатеринбург)"

Последний раз редактировалось mistx; 30.03.2009 в 18:04.
mistx вне форума Ответить с цитированием
Старый 30.03.2009, 18:03   #16
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
могу ли я создать несколько Case? не отразится это на работе в целом?
Конечно, создавайте их сколько угодно...

Для VBA запись
Код:
Select Case Cells(i, 1)
            Case "Монтажзавод", "энергосервис", "сибхимонтаж", "эльдорадо": Cells(i, 17) = "за услуги"
        End Select
равносильна записи
Код:
Select Case Cells(i, 1)
    Case "Монтажзавод": Cells(i, 17) = "за услуги"
    Case "энергосервис": Cells(i, 17) = "за услуги"
    Case "сибхимонтаж": Cells(i, 17) = "за услуги"
    Case "эльдорадо": Cells(i, 17) = "за услуги"
    Case "что-то другое", "ещё что-то": Cells(i, 17) = "за спасибо"
End Select
Для увеличения скорости работы (хотя и так всё работает моментально) старайтесь помещать наиболее вероятные значения в начало конструкции Select Case ... End Select
То есть, если вероятность встретить в первой ячейке слово Монтажзавод намного выше, чем какое-либо другое слово, ставьте первой проверку Case "Монтажзавод" (после первого совпадения остальные значения не проверяются)

Полагаю, Ваш код работает достаточно медленно из-за перебора десятков тысяч ячеек:
Код:
    For i = 2 To 38454
        Select Case Cells(i, 1)
        ' ...
        End Select
    Next i
Заметно сократить время работы макроса (в сотни раз) можно, изначально считывая диапазон ячеек в массив, и анализируя уже значения массива.

Последний раз редактировалось EducatedFool; 30.03.2009 в 18:06.
EducatedFool вне форума Ответить с цитированием
Старый 30.03.2009, 21:31   #17
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

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

МОУ "ГИМНАЗИЯ 22", ИНН 456456456, Л/С 45645645 В УФК ПО свердл.ОБЛ.(АДМИНИСТРАЦИЯ Г.Екатеринбурга)

Case "МОУ" & Chr(34) & "ГИМНАЗИЯ 22" & Chr(34)
дальше не могу понять, как быть с запятой
mistx вне форума Ответить с цитированием
Старый 30.03.2009, 21:42   #18
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Попробуй так:
"МОУ " & Chr(34) & "ГИМНАЗИЯ 22" & Chr(34) & ", ИНН 456456456, Л/С 45645645 В УФК ПО свердл.ОБЛ.(АДМИНИСТРАЦИЯ Г.Екатеринбурга)"
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 30.03.2009, 21:56   #19
mistx
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 104
По умолчанию

иногда бывает все так просто.
спасибо всем за помощь!!!
mistx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировать месяцы соответственно их номера, а не по алфавиту в сводной таблице maxic Microsoft Office Excel 4 10.10.2008 17:51
Итоги и фильтр данных в сводной таблице ExcArt Microsoft Office Excel 6 22.05.2008 01:56
Сортировка в таблице... Gektor Паскаль, Turbo Pascal, PascalABC.NET 2 23.09.2007 12:10