|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.04.2010, 21:41 | #1 |
Новичок
Джуниор
Регистрация: 13.04.2010
Сообщений: 2
|
Макрос на смещение столбца
Добрый день!
Кто может исправьте пожалуйста макрос, чтобы он не как в этом варианте при добавлении в ячейку А2 смещал данные вниз на следующую строку, а нужно чтобы весь столбец "А" ячейки с 4 например по 20 смещался вправо в следующий столбец при добавлении данных в столбец "А", и так каждый раз при добавлении.( данные в столбец "А" будут автоматом копироваться с другого листа, весь этот процесс необходим потому что этот лист будет архивным, и всегда на первые столбцы будет ссылаться формула для обсчета дальнейших данных, а старые данные так и будут смещаться вправо). Используется Excel 2010. |
14.04.2010, 04:44 | #2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Во вложении один из возможных вариантов.
Чем шире угол зрения, тем он тупее.
|
16.04.2010, 10:46 | #3 |
Новичок
Джуниор
Регистрация: 13.04.2010
Сообщений: 2
|
|
25.09.2010, 21:18 | #4 |
Регистрация: 21.09.2010
Сообщений: 6
|
Добрый день.
Уважаемый SAS888, не могли бы Вы немного изменить Ваш же код "смещение 2 столбца"? У меня выводятся данные в каждую строку столбца А один раз в день. При смене даты нужно сместить эти данные в столбец В, а в заголовок столбца В поставить предыдущую дату. И так каждый день, чтобы сохранялись архивные данные по дням. Ограничивать количество столбцов не предполагается, но желательно предусмотреть такую возможность. |
27.09.2010, 07:02 | #5 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Посмотрите вложение. При открытии файла сравнивается текущая дата с датой, записанной в ячейке "A1". При несовпадении, добавляется 1-й столбец, все столбцы смещаются вправо и в добавленный столбец в 1-ю строку помещается текущая дата. При заполнении всех столбцов листа будет выведено соответствующее предупреждение.
Чем шире угол зрения, тем он тупее.
|
27.09.2010, 20:08 | #6 | |
Регистрация: 21.09.2010
Сообщений: 6
|
Цитата:
|
|
28.09.2010, 06:47 | #7 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Но, если Вам требуется ограничить количество столбцов вручную, то в следующем примере, при открытии файла, если текущая дата не совпадает с датой в ячейке "A1" 1-го листа, будет предложено ввести номер граничного столбца. Если смещение возможно, оно произойдет. Если нет, то будет выведено соответствующее предупреждение и смещения не произойдет. При вводе недопустимого значения будет предложено 3 действия: 1. "Прервать" - файл будет закрыт. 2. "Повторить" - предложение ввести другой номер столбца. 3. "Пропустить" - игнорировать ввод и ничего не сдвигать. Файл остается открыт. P.S. Если предельное количество столбцов есть константа, то лучше не вводить это число каждый раз при открытии файла, а сравнение производить внутри кода макроса. И еще: возможно ли, что текущая дата будет меньше, чем последняя дата в ячейке "A1"? Сейчас осуществляется абсолютное сравнение. И если даты не совпадают, то столбцы будут сдвинуты. Может лучше сравнивать относительно? Т.е. если меньше или равно, то ничего не сдвигать?
Чем шире угол зрения, тем он тупее.
|
|
29.09.2010, 22:58 | #8 |
Регистрация: 21.09.2010
Сообщений: 6
|
Текущая дата не может быть меньше, чем последняя дата. Количество столбцов должно быть большим, поскольку это что-то типа архива. Поэтому ограничивать нужно внутри кода вручную на тот случай, если архив станет слишком большим.
И самое главное я не совсем точно изначально описал вопрос. У меня данные сдвигаются из столбца С, а не А. Думал, что просто заменю А на С. А в столбце С забита формула. И теперь сдвигается и формула тоже. А нужно, чтобы сдвигались только предыдущие результаты формулы, а сама формула действовала бы всегда на столбец С. Может путано объясняю. Прицепил пример. Т.е данные в столбце В меняются раз в день. На их основе делается вычисление и оно попадает в столбец С. И уже эти данные надо сдвигать. Последний раз редактировалось Borik; 29.09.2010 в 23:45. |
30.09.2010, 06:56 | #9 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Посмотрите вложение. При открытии файла, если текущая дата больше, чем дата, записанная в ячейке "C1", то происходит сдвиг столбцов вправо, начиная со столбца "C", причем сдвигаются только значения, а добавленный столбец "C" будет содержать Ваши формулы. Так нужно было? По поводу ограничения сдвига не совсем понятно, что Вам все-таки требуется. В настоящем примере сдвиг будет осуществляться до тех пор, пока не закончатся столбцы на листе Excel не зависимо от версии. Если предельное количество столбцов нужно ограничить каким-либо значением, то либо укажите его конкретно, либо определите ячейку, которая будет содержать это значение. Причем, эта служебная ячейка должна находиться в диапазоне столбцов "A:C" (т.е. которые не сдвигаются). Можно, конечно, вводить это значение и вручную, но, по-моему, это не есть лучший вариант. Зачем пользователю делать "лишние" действия при открытии?
Чем шире угол зрения, тем он тупее.
|
30.09.2010, 22:40 | #10 |
Регистрация: 21.09.2010
Сообщений: 6
|
Да, смещение - то, что нужно. Насчет "лишних" действий Вы правы. Служебной ячейкой может быть А1. Т.е. если в А1 ничего не стоит, то ограничения нет и могут заполниться все 16000 столбцов. Если стоит цифра, допустим, 10, то заполняются 10 столбцов, и дальше все предыдущие обнуляются. Т.е. мы всегда будем видеть данные только последних 10 дней. При этом никаких сообщений не нужно.
И еще вопрос. Смещение срабатывает только при открытии файла. Т.е. если я не закрываю файл несколько дней, то смещаться не будет при изменении даты? Последний раз редактировалось Borik; 30.09.2010 в 22: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 |