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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2010, 21:41   #1
Solteks
Новичок
Джуниор
 
Регистрация: 13.04.2010
Сообщений: 2
По умолчанию Макрос на смещение столбца

Добрый день!

Кто может исправьте пожалуйста макрос, чтобы он не как в этом варианте при добавлении в ячейку А2 смещал данные вниз на следующую строку, а нужно чтобы весь столбец "А" ячейки с 4 например по 20 смещался вправо в следующий столбец при добавлении данных в столбец "А", и так каждый раз при добавлении.( данные в столбец "А" будут автоматом копироваться с другого листа, весь этот процесс необходим потому что этот лист будет архивным, и всегда на первые столбцы будет ссылаться формула для обсчета дальнейших данных, а старые данные так и будут смещаться вправо).

Используется Excel 2010.
Вложения
Тип файла: zip SMEHENIE.zip (12.7 Кб, 32 просмотров)
Solteks вне форума Ответить с цитированием
Старый 14.04.2010, 04:44   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Во вложении один из возможных вариантов.
Вложения
Тип файла: rar SMEHENIE_2.rar (10.1 Кб, 52 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 16.04.2010, 10:46   #3
Solteks
Новичок
Джуниор
 
Регистрация: 13.04.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Во вложении один из возможных вариантов.
Спасибо, немножко не так, но вопрос уже решен.
Solteks вне форума Ответить с цитированием
Старый 25.09.2010, 21:18   #4
Borik
 
Регистрация: 21.09.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Во вложении один из возможных вариантов.
Добрый день.
Уважаемый SAS888, не могли бы Вы немного изменить Ваш же код "смещение 2 столбца"? У меня выводятся данные в каждую строку столбца А один раз в день. При смене даты нужно сместить эти данные в столбец В, а в заголовок столбца В поставить предыдущую дату. И так каждый день, чтобы сохранялись архивные данные по дням. Ограничивать количество столбцов не предполагается, но желательно предусмотреть такую возможность.
Borik вне форума Ответить с цитированием
Старый 27.09.2010, 07:02   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. При открытии файла сравнивается текущая дата с датой, записанной в ячейке "A1". При несовпадении, добавляется 1-й столбец, все столбцы смещаются вправо и в добавленный столбец в 1-ю строку помещается текущая дата. При заполнении всех столбцов листа будет выведено соответствующее предупреждение.
Вложения
Тип файла: rar Книга1.rar (8.4 Кб, 44 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 27.09.2010, 20:08   #6
Borik
 
Регистрация: 21.09.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Посмотрите вложение. При открытии файла сравнивается текущая дата с датой, записанной в ячейке "A1". При несовпадении, добавляется 1-й столбец, все столбцы смещаются вправо и в добавленный столбец в 1-ю строку помещается текущая дата. При заполнении всех столбцов листа будет выведено соответствующее предупреждение.
А все столбцы - это сколько? Я так понимаю, что в excele 2007 их будет очень много. Можно ли их ограничивать количеством, заданным вручную?
Borik вне форума Ответить с цитированием
Старый 28.09.2010, 06:47   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
А все столбцы - это сколько? Я так понимаю, что в excele 2007 их будет очень много. Можно ли их ограничивать количеством, заданным вручную?
Подразумевалось, что сообщение об ограничении будет выведено при заполнении всех столбцов на листе, не зависимо от версии Excel.
Но, если Вам требуется ограничить количество столбцов вручную, то в следующем примере, при открытии файла, если текущая дата не совпадает с датой в ячейке "A1" 1-го листа, будет предложено ввести номер граничного столбца. Если смещение возможно, оно произойдет. Если нет, то будет выведено соответствующее предупреждение и смещения не произойдет. При вводе недопустимого значения будет предложено 3 действия:
1. "Прервать" - файл будет закрыт.
2. "Повторить" - предложение ввести другой номер столбца.
3. "Пропустить" - игнорировать ввод и ничего не сдвигать. Файл остается открыт.

P.S. Если предельное количество столбцов есть константа, то лучше не вводить это число каждый раз при открытии файла, а сравнение производить внутри кода макроса. И еще: возможно ли, что текущая дата будет меньше, чем последняя дата в ячейке "A1"? Сейчас осуществляется абсолютное сравнение. И если даты не совпадают, то столбцы будут сдвинуты. Может лучше сравнивать относительно? Т.е. если меньше или равно, то ничего не сдвигать?
Вложения
Тип файла: rar Книга1_2.rar (9.0 Кб, 21 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 29.09.2010, 22:58   #8
Borik
 
Регистрация: 21.09.2010
Сообщений: 6
По умолчанию

Текущая дата не может быть меньше, чем последняя дата. Количество столбцов должно быть большим, поскольку это что-то типа архива. Поэтому ограничивать нужно внутри кода вручную на тот случай, если архив станет слишком большим.
И самое главное я не совсем точно изначально описал вопрос. У меня данные сдвигаются из столбца С, а не А. Думал, что просто заменю А на С. А в столбце С забита формула. И теперь сдвигается и формула тоже. А нужно, чтобы сдвигались только предыдущие результаты формулы, а сама формула действовала бы всегда на столбец С. Может путано объясняю. Прицепил пример. Т.е данные в столбце В меняются раз в день. На их основе делается вычисление и оно попадает в столбец С. И уже эти данные надо сдвигать.
Вложения
Тип файла: rar СмещениеПример.rar (8.4 Кб, 15 просмотров)

Последний раз редактировалось Borik; 29.09.2010 в 23:45.
Borik вне форума Ответить с цитированием
Старый 30.09.2010, 06:56   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. При открытии файла, если текущая дата больше, чем дата, записанная в ячейке "C1", то происходит сдвиг столбцов вправо, начиная со столбца "C", причем сдвигаются только значения, а добавленный столбец "C" будет содержать Ваши формулы. Так нужно было? По поводу ограничения сдвига не совсем понятно, что Вам все-таки требуется. В настоящем примере сдвиг будет осуществляться до тех пор, пока не закончатся столбцы на листе Excel не зависимо от версии. Если предельное количество столбцов нужно ограничить каким-либо значением, то либо укажите его конкретно, либо определите ячейку, которая будет содержать это значение. Причем, эта служебная ячейка должна находиться в диапазоне столбцов "A:C" (т.е. которые не сдвигаются). Можно, конечно, вводить это значение и вручную, но, по-моему, это не есть лучший вариант. Зачем пользователю делать "лишние" действия при открытии?
Вложения
Тип файла: rar СмещениеПример.rar (6.7 Кб, 55 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 30.09.2010, 22:40   #10
Borik
 
Регистрация: 21.09.2010
Сообщений: 6
По умолчанию

Да, смещение - то, что нужно. Насчет "лишних" действий Вы правы. Служебной ячейкой может быть А1. Т.е. если в А1 ничего не стоит, то ограничения нет и могут заполниться все 16000 столбцов. Если стоит цифра, допустим, 10, то заполняются 10 столбцов, и дальше все предыдущие обнуляются. Т.е. мы всегда будем видеть данные только последних 10 дней. При этом никаких сообщений не нужно.
И еще вопрос. Смещение срабатывает только при открытии файла. Т.е. если я не закрываю файл несколько дней, то смещаться не будет при изменении даты?

Последний раз редактировалось Borik; 30.09.2010 в 22:42.
Borik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смещение рисунка skrudjmagdak Общие вопросы Delphi 5 27.03.2010 15:23
Смещение компонента Volt Общие вопросы Delphi 9 20.01.2010 00:36
Смещение ячеек Zulius Microsoft Office Excel 3 26.11.2009 12:30
Смещение в WinHex bmw Софт 4 22.03.2009 02:16
В прямоугольной матрице переставить столбцы так, чтобы сумма элементов столбца росла от первого столбца Aleo13 Помощь студентам 5 15.10.2008 18:34