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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос с таблицей соответствия - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос с таблицей соответствия
Макрос с таблицей соответствия
Hugo Дата: Понедельник, 14.02.2011, 11:56 | Сообщение № 21
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
Да, скрипт рассчита на Ваш пример - на 6 столбцов. Если данных в строке может быть больше - нужно переделать.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеДа, скрипт рассчита на Ваш пример - на 6 столбцов. Если данных в строке может быть больше - нужно переделать.

Автор - Hugo
Дата добавления - 14.02.2011 в 11:56
Hammeron Дата: Понедельник, 14.02.2011, 12:04 | Сообщение № 22
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Ну то есть он заменяет я так понимаю всю строку, а не 2 ячейки в строке?
 
Ответить
СообщениеНу то есть он заменяет я так понимаю всю строку, а не 2 ячейки в строке?

Автор - Hammeron
Дата добавления - 14.02.2011 в 12:04
Hugo Дата: Понедельник, 14.02.2011, 12:09 | Сообщение № 23
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
Он генерит строку из 5 ячеек строки и подменяет четвёртую. Если в строке есть ещё данные - они остаются "за бортом"/


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеОн генерит строку из 5 ячеек строки и подменяет четвёртую. Если в строке есть ещё данные - они остаются "за бортом"/

Автор - Hugo
Дата добавления - 14.02.2011 в 12:09
Hammeron Дата: Понедельник, 14.02.2011, 12:19 | Сообщение № 24
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

А как нить возможно поменять код чтобы он создавал часть строки, а остальные данные оставались без изменения? Я так понимаю вот эта часть
Code
objFile.Writeline Split(X, ";")(0) & ";" & _
                    Split(X, ";")(1) & ";" & _
                    Split(X, ";")(2) & ";" & _
                    Split(X, ";")(3) & ";" & _
                    first1 & ";" & _
                    Split(X, ";")(5)

отвечает за это?

И еще. Попробовал код скопировать в редактор VBA в эксель, и в итоге не вкурил как преобразовать правильно код, чтобы он работал как макрос, чтобы грубо говоря видеть результат работы перед глазами. Ну то есть я убрал кавычки с комментариев, но понятно, что надо и какие то строки убрать, допустим те строки кода которые отвечают за вызов диалога?

 
Ответить
СообщениеА как нить возможно поменять код чтобы он создавал часть строки, а остальные данные оставались без изменения? Я так понимаю вот эта часть
Code
objFile.Writeline Split(X, ";")(0) & ";" & _
                    Split(X, ";")(1) & ";" & _
                    Split(X, ";")(2) & ";" & _
                    Split(X, ";")(3) & ";" & _
                    first1 & ";" & _
                    Split(X, ";")(5)

отвечает за это?

И еще. Попробовал код скопировать в редактор VBA в эксель, и в итоге не вкурил как преобразовать правильно код, чтобы он работал как макрос, чтобы грубо говоря видеть результат работы перед глазами. Ну то есть я убрал кавычки с комментариев, но понятно, что надо и какие то строки убрать, допустим те строки кода которые отвечают за вызов диалога?


Автор - Hammeron
Дата добавления - 14.02.2011 в 12:19
Hugo Дата: Понедельник, 14.02.2011, 12:46 | Сообщение № 25
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
Изменил на любую длину строки. В архиве и макрос, и скрипт.
Но результат перед глазами не увидите - код работает напрямую с текстовым файлом. Но можете прогнать макрос пошагово в редакторе и посмотреть, как что работает.

Если Вы хотите сделать так, как в начале описывали - открыть оба/три файла, запустить код, вручную сохранить, то тогда код нужно упростить/переделать.
Основной алготитм остаётся.

К сообщению приложен файл: _.2.zip (12.3 Kb)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеИзменил на любую длину строки. В архиве и макрос, и скрипт.
Но результат перед глазами не увидите - код работает напрямую с текстовым файлом. Но можете прогнать макрос пошагово в редакторе и посмотреть, как что работает.

Если Вы хотите сделать так, как в начале описывали - открыть оба/три файла, запустить код, вручную сохранить, то тогда код нужно упростить/переделать.
Основной алготитм остаётся.


Автор - Hugo
Дата добавления - 14.02.2011 в 12:46
Hammeron Дата: Понедельник, 14.02.2011, 13:37 | Сообщение № 26
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Вот, щас все отлично работает)) Я так понимаю судя по принципу работы макроса невозможно будет вставить в код часть кода вида
Code
Range("F:F").Replace "X", "Y"
, чтобы перед заменой с применением таблицы, он делал замены некоторых значений ячеек X на Y? Если такая возможность есть, то куда можно вставить в код строчки из моего скрипта замены?
 
Ответить
СообщениеВот, щас все отлично работает)) Я так понимаю судя по принципу работы макроса невозможно будет вставить в код часть кода вида
Code
Range("F:F").Replace "X", "Y"
, чтобы перед заменой с применением таблицы, он делал замены некоторых значений ячеек X на Y? Если такая возможность есть, то куда можно вставить в код строчки из моего скрипта замены?

Автор - Hammeron
Дата добавления - 14.02.2011 в 13:37
Hugo Дата: Понедельник, 14.02.2011, 14:56 | Сообщение № 27
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
Т.к. этот код не работет с листом и диапазоном, а анализирует построчно, то если нужно что-то менять в шестом столбце, то придётся менять шестой элемент каждой строки.
Можно вот тут подключиться:

For y = 0 To UBound(temp3)
If y <> 4 Then
s = s & temp3(y) & ";"
Else
s = s & first1 & ";"
End If
Next

Сделать анализ по Select Case y: если анализируем 5-й элемент (4, начало отсчёта с 0), то как сейчас, для 6-го свой подход - с Replace, для остальных общее правило.
Нетрудно добавить, только я не понял, что заменять нужно?



excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеТ.к. этот код не работет с листом и диапазоном, а анализирует построчно, то если нужно что-то менять в шестом столбце, то придётся менять шестой элемент каждой строки.
Можно вот тут подключиться:

For y = 0 To UBound(temp3)
If y <> 4 Then
s = s & temp3(y) & ";"
Else
s = s & first1 & ";"
End If
Next

Сделать анализ по Select Case y: если анализируем 5-й элемент (4, начало отсчёта с 0), то как сейчас, для 6-го свой подход - с Replace, для остальных общее правило.
Нетрудно добавить, только я не понял, что заменять нужно?


Автор - Hugo
Дата добавления - 14.02.2011 в 14:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос с таблицей соответствия
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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