Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проставить значение макросом вместо ВПР - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 212»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проставить значение макросом вместо ВПР (Макросы/Sub)
Проставить значение макросом вместо ВПР
amadeus017 Дата: Суббота, 13.02.2016, 17:40 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток!

Уважаемые форумчане, обращаюсь к вам за помощью в написании макроса, так как в нем совсем не силен.
Стоит задача, в приложенном файле, "01_Маршрут", в графу "R", проставить код маршрута, который берется из графы "O" по средствам макроса, т.е., у каждого направления, есть свой КОД, который и следует занести в столбик "Код маршрута" ®. Если это Чита, то код будет "Ч0155", если это Казань, то код будет "К0308", т.д.
(коды в макрос, прописать вручную).
Таблица большая, и количество строк, постоянно меняется, а вручную заносить данные, каждый раз, утомительно.
Это еще не все, нужно еще из графы "N", если значение с минусом, то перенести в графу "S", но уже с плюсом, а если в графе "N" положительное значение, то данное значение, перенести в графу "T", так же с плюсом.

данная тема так же размещена на
http://www.programmersforum.ru/showthread.php?t=289274
К сообщению приложен файл: 01_.xlsx(17Kb)


Сообщение отредактировал amadeus017 - Суббота, 13.02.2016, 18:28
 
Ответить
СообщениеДоброго времени суток!

Уважаемые форумчане, обращаюсь к вам за помощью в написании макроса, так как в нем совсем не силен.
Стоит задача, в приложенном файле, "01_Маршрут", в графу "R", проставить код маршрута, который берется из графы "O" по средствам макроса, т.е., у каждого направления, есть свой КОД, который и следует занести в столбик "Код маршрута" ®. Если это Чита, то код будет "Ч0155", если это Казань, то код будет "К0308", т.д.
(коды в макрос, прописать вручную).
Таблица большая, и количество строк, постоянно меняется, а вручную заносить данные, каждый раз, утомительно.
Это еще не все, нужно еще из графы "N", если значение с минусом, то перенести в графу "S", но уже с плюсом, а если в графе "N" положительное значение, то данное значение, перенести в графу "T", так же с плюсом.

данная тема так же размещена на
http://www.programmersforum.ru/showthread.php?t=289274

Автор - amadeus017
Дата добавления - 13.02.2016 в 17:40
Nic70y Дата: Суббота, 13.02.2016, 17:52 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3493
Репутация: 724 ±
Замечаний: 0% ±

Excel 2013
amadeus017, приложите файл сюда так же, т.к.
для скачивания его с programmersforum нужна регистрация


ЯД(poison) 41001841029809
+7 978 049 98 74 (мтс)
 
Ответить
Сообщениеamadeus017, приложите файл сюда так же, т.к.
для скачивания его с programmersforum нужна регистрация

Автор - Nic70y
Дата добавления - 13.02.2016 в 17:52
TimSha Дата: Суббота, 13.02.2016, 17:54 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 74 ±
Замечаний: 0% ±

Excel 2013 Pro +
данная тема так же размещена на

Дабы модераторы не высекли (Правила, п.5), есть вариант уйти под прикрытие фрилансеров - оформить заказ... ;)
[offtop]http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=74575&TITLE_SEO=74575-podstavit-znachenie-i-formulu&MID=625251#message625251[/offtop]


"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)

Сообщение отредактировал TimSha - Суббота, 13.02.2016, 17:56
 
Ответить
Сообщение
данная тема так же размещена на

Дабы модераторы не высекли (Правила, п.5), есть вариант уйти под прикрытие фрилансеров - оформить заказ... ;)
[offtop]http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=74575&TITLE_SEO=74575-podstavit-znachenie-i-formulu&MID=625251#message625251[/offtop]

Автор - TimSha
Дата добавления - 13.02.2016 в 17:54
Udik Дата: Суббота, 13.02.2016, 18:04 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
А чем формулы не устраивают?


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеА чем формулы не устраивают?

Автор - Udik
Дата добавления - 13.02.2016 в 18:04
Nic70y Дата: Суббота, 13.02.2016, 18:05 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3493
Репутация: 724 ±
Замечаний: 0% ±

Excel 2013
обычный впр
Код
=ВПР(O4;Page2!O$4:R$26;4;)
нафигмакросы?
Цитата
Это еще не все,
ну уж нет - один вопрос = одна тема :(


ЯД(poison) 41001841029809
+7 978 049 98 74 (мтс)


Сообщение отредактировал Nic70y - Суббота, 13.02.2016, 18:06
 
Ответить
Сообщениеобычный впр
Код
=ВПР(O4;Page2!O$4:R$26;4;)
нафигмакросы?
Цитата
Это еще не все,
ну уж нет - один вопрос = одна тема :(

Автор - Nic70y
Дата добавления - 13.02.2016 в 18:05
amadeus017 Дата: Суббота, 13.02.2016, 18:26 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
обычный впр

Согласен, это обычный ВПР, но при ВПР, нужно постоянно ссылаться на таблицу, в то время, как в тексте макроса, можно прописать параметры отбора.
Что и хотелось бы сделать.
 
Ответить
Сообщение
обычный впр

Согласен, это обычный ВПР, но при ВПР, нужно постоянно ссылаться на таблицу, в то время, как в тексте макроса, можно прописать параметры отбора.
Что и хотелось бы сделать.

Автор - amadeus017
Дата добавления - 13.02.2016 в 18:26
buchlotnik Дата: Суббота, 13.02.2016, 18:36 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Цитата
нужно постоянно ссылаться на таблицу
а макросом как? или вы хотите словарь прямо в тело макроса забить? или я не понял про какие параметры идёт речь %)


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru
 
Ответить
Сообщение
Цитата
нужно постоянно ссылаться на таблицу
а макросом как? или вы хотите словарь прямо в тело макроса забить? или я не понял про какие параметры идёт речь %)

Автор - buchlotnik
Дата добавления - 13.02.2016 в 18:36
amadeus017 Дата: Суббота, 13.02.2016, 18:39 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
а макросом как? или вы хотите словарь прямо в тело макроса забить?

Совершенно верно, в само тело.
 
Ответить
Сообщение
а макросом как? или вы хотите словарь прямо в тело макроса забить?

Совершенно верно, в само тело.

Автор - amadeus017
Дата добавления - 13.02.2016 в 18:39
Udik Дата: Суббота, 13.02.2016, 18:41 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
или вы хотите словарь прямо в тело макроса забить

ага, причем это нам предлагают особо извращённым способом
Если это Чита, то код будет "Ч0155", если это Казань, то код будет "К0308", т.д.
(коды в макрос, прописать вручную).

я пас B)
интересно сколько всего маршрутов %)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Суббота, 13.02.2016, 18:44
 
Ответить
Сообщение
или вы хотите словарь прямо в тело макроса забить

ага, причем это нам предлагают особо извращённым способом
Если это Чита, то код будет "Ч0155", если это Казань, то код будет "К0308", т.д.
(коды в макрос, прописать вручную).

я пас B)
интересно сколько всего маршрутов %)

Автор - Udik
Дата добавления - 13.02.2016 в 18:41
amadeus017 Дата: Суббота, 13.02.2016, 18:47 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
я пас B)
интересно сколько всего маршрутов %)


Достаточно прописать хотя бы пять, а дальше, я сам в макросе дополнял бы маршруты.
 
Ответить
Сообщение
я пас B)
интересно сколько всего маршрутов %)


Достаточно прописать хотя бы пять, а дальше, я сам в макросе дополнял бы маршруты.

Автор - amadeus017
Дата добавления - 13.02.2016 в 18:47
StoTisteg Дата: Суббота, 13.02.2016, 18:50 | Сообщение № 11
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
А не проще словарь держать в отдельном текстовом файле?


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеА не проще словарь держать в отдельном текстовом файле?

Автор - StoTisteg
Дата добавления - 13.02.2016 в 18:50
Udik Дата: Суббота, 13.02.2016, 18:52 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
А что Вы выигрываете пряча словарь в тело макроса? Кто захочет до него добраться - доберётся.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеА что Вы выигрываете пряча словарь в тело макроса? Кто захочет до него добраться - доберётся.

Автор - Udik
Дата добавления - 13.02.2016 в 18:52
amadeus017 Дата: Суббота, 13.02.2016, 18:52 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А не проще словарь держать в отдельном текстовом файле?


ни разу не пробовал такое, в макросах не силен ((((
 
Ответить
Сообщение
А не проще словарь держать в отдельном текстовом файле?


ни разу не пробовал такое, в макросах не силен ((((

Автор - amadeus017
Дата добавления - 13.02.2016 в 18:52
Udik Дата: Суббота, 13.02.2016, 18:56 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
Может проще на очень скрытом листе держать.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеМожет проще на очень скрытом листе держать.

Автор - Udik
Дата добавления - 13.02.2016 в 18:56
amadeus017 Дата: Суббота, 13.02.2016, 18:57 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А что Вы выигрываете пряча словарь в тело макроса? Кто захочет до него добраться - доберётся.


Данные файлы заполняют люди, которые далеки от макросов и формул, типа ВПР.
 
Ответить
Сообщение
А что Вы выигрываете пряча словарь в тело макроса? Кто захочет до него добраться - доберётся.


Данные файлы заполняют люди, которые далеки от макросов и формул, типа ВПР.

Автор - amadeus017
Дата добавления - 13.02.2016 в 18:57
amadeus017 Дата: Суббота, 13.02.2016, 19:00 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Может проще на очень скрытом листе держать.


Файл выгружается из другой программы, и сохраняется в Excel, далее, при помощи фильтра проставляются маршруты.
 
Ответить
Сообщение
Может проще на очень скрытом листе держать.


Файл выгружается из другой программы, и сохраняется в Excel, далее, при помощи фильтра проставляются маршруты.

Автор - amadeus017
Дата добавления - 13.02.2016 в 19:00
Udik Дата: Суббота, 13.02.2016, 19:07 | Сообщение № 17
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
Тогда лучше сделать рабочий файл, который будет открывать экселевский файл-выгрузку и обрабатывать, это если данные на одном месте всегда.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Суббота, 13.02.2016, 19:08
 
Ответить
СообщениеТогда лучше сделать рабочий файл, который будет открывать экселевский файл-выгрузку и обрабатывать, это если данные на одном месте всегда.

Автор - Udik
Дата добавления - 13.02.2016 в 19:07
amadeus017 Дата: Суббота, 13.02.2016, 19:09 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Тогда лучше сделать рабочий файл, который будет открывать файл-выгрузку и обрабатывать, это если данные на одном месте всегда.


Можно и так, так как действительно, данные выгружаются в одно и тоже место
 
Ответить
Сообщение
Тогда лучше сделать рабочий файл, который будет открывать файл-выгрузку и обрабатывать, это если данные на одном месте всегда.


Можно и так, так как действительно, данные выгружаются в одно и тоже место

Автор - amadeus017
Дата добавления - 13.02.2016 в 19:09
StoTisteg Дата: Суббота, 13.02.2016, 19:48 | Сообщение № 19
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Вот смотрите. У Вас есть файл dictionary.txt, лежащий в папке с макросом с форматом записи типа

Красноярск#K0309

Теперь делаем функцию, которая вернёт код маршрута по названию города

[vba]
Код

Private Function CityCode(City As String) As String

    CityCode = ""
    On Error Resume Next
    Open ThisWorkbook.Path & "\dictionary.txt" For Input As #1 'Открываем файл на чтение
    If Err.Number <> 0 Then 'Если у кого-то шаловливые ручки, требуем вернуть всё на место
        Msgbox prompt:="Положи словарь на место и больше не трогай!"
        ThisWorkbook.Close
    End If
    Do While Not EOF(1) 'Крутимся в цикле до конца файла
        Line Input #1,  CityCode
        If InStr(1,CityCode,City,vbTextCompare) = 1 And InStr(1,CityCode,"#",vbTextCompare) - 1 = Len(City) Then 'Проверяем, найдена ли нужная строка
            CityCode = Right(CityCode, InStr(1,CityCode,"#",vbTextCompare)  + 1) 'Если да, то вырезаем код и выходим из цикла
            Exit Do
                Else
                    CityCode = "" 'Если нет — сбрасываем возвращаемое значение
        End If
    Loop
    Close #1
    If CityCode = "" Then Msgbox prompt:="Маршрута на " & City & " в списке нет, пополните список!" 'Проверяем, найден ли маршрут

End Function

[/vba]

И всю эту фигню крутим в цикле заполнения столбца

[vba]
Код


Sub CodeForCity

    Dim i As Long

    For i = 4 To ActiveSheet.UsedRange.rows.Count
        Cells(i, 15).Value = CityCode(Trim(Cells(i, 18).Value))
        If Val(Cells(i, 14).Value) < 0 Then
            Cells(i, 19).Value = Abs(Val(Cells(i, 14).Value))
            Else
               Cells(i, 20).Value = Val(Cells(i, 14).Value)
        End If
    Next i

End Sub

[/vba]


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Суббота, 13.02.2016, 22:28
 
Ответить
СообщениеВот смотрите. У Вас есть файл dictionary.txt, лежащий в папке с макросом с форматом записи типа

Красноярск#K0309

Теперь делаем функцию, которая вернёт код маршрута по названию города

[vba]
Код

Private Function CityCode(City As String) As String

    CityCode = ""
    On Error Resume Next
    Open ThisWorkbook.Path & "\dictionary.txt" For Input As #1 'Открываем файл на чтение
    If Err.Number <> 0 Then 'Если у кого-то шаловливые ручки, требуем вернуть всё на место
        Msgbox prompt:="Положи словарь на место и больше не трогай!"
        ThisWorkbook.Close
    End If
    Do While Not EOF(1) 'Крутимся в цикле до конца файла
        Line Input #1,  CityCode
        If InStr(1,CityCode,City,vbTextCompare) = 1 And InStr(1,CityCode,"#",vbTextCompare) - 1 = Len(City) Then 'Проверяем, найдена ли нужная строка
            CityCode = Right(CityCode, InStr(1,CityCode,"#",vbTextCompare)  + 1) 'Если да, то вырезаем код и выходим из цикла
            Exit Do
                Else
                    CityCode = "" 'Если нет — сбрасываем возвращаемое значение
        End If
    Loop
    Close #1
    If CityCode = "" Then Msgbox prompt:="Маршрута на " & City & " в списке нет, пополните список!" 'Проверяем, найден ли маршрут

End Function

[/vba]

И всю эту фигню крутим в цикле заполнения столбца

[vba]
Код


Sub CodeForCity

    Dim i As Long

    For i = 4 To ActiveSheet.UsedRange.rows.Count
        Cells(i, 15).Value = CityCode(Trim(Cells(i, 18).Value))
        If Val(Cells(i, 14).Value) < 0 Then
            Cells(i, 19).Value = Abs(Val(Cells(i, 14).Value))
            Else
               Cells(i, 20).Value = Val(Cells(i, 14).Value)
        End If
    Next i

End Sub

[/vba]

Автор - StoTisteg
Дата добавления - 13.02.2016 в 19:48
StoTisteg Дата: Суббота, 13.02.2016, 19:59 | Сообщение № 20
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Может проще на очень скрытом листе держать.

Прелесть .txt в том, что в него может добавить строчку самый дремучий юзер на любой лопате...


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
Может проще на очень скрытом листе держать.

Прелесть .txt в том, что в него может добавить строчку самый дремучий юзер на любой лопате...

Автор - StoTisteg
Дата добавления - 13.02.2016 в 19:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проставить значение макросом вместо ВПР (Макросы/Sub)
Страница 1 из 212»
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!