Форум на Kuban.ru (http://forums.kuban.ru/)
-   Использование программ (http://forums.kuban.ru/f1025/)
-   -   Практическ неразрешимая задача по Excel (http://forums.kuban.ru/f1025/praktichesk_nerazreshimaya_zadacha_po_excel-2548136.html)

Solomon 28.04.2012 10:07

Практическ неразрешимая задача по Excel
 
вообщем задача такая:
в ячейку а1 ввожу числовое значение
нужно чтобы в ячейке б1 появлялась текущая дата
это у меня получилось, но при открытии на следующий деньпредыдущие даты в б1 меняются на текущую, как сделать, чтобы они оставались неизменны?

economist 28.04.2012 10:50

В Excel неразрешимых задач не существует. Вы вставили в B1 формулу вида =СЕГОДНЯ() или =ТДАТА()

Они пересчитываются при открытии файла, значит если нужно их заморозить - превратите их в значения одним из способов:
1) Скопировать - Спец вставка - как значения
2) Написать макрос, которые будет по сочетанию клавиш типа Ctrl+Q вставлять значение:

Sub PasteAsValue()
ActiveCell.Value = ActiveCell.Value
End Sub

Нажмите Alt+F11, создайте модуль, встаьте макрос, затем из Excel назначьте ему сочетание клавиш.

3) Написать макрос, который автоматически, при закрытии и сохранении файла заменяет формулы в этом же столбце на значения, кроме последней ячейки. Правда есть один нюанс: если заработаться до полуночи - дата может поменяться.
...
Способы наверняка еще есть, времени у меня сегодня мало, поэтому на этих 5 ти минутах остановимся.

Solomon 28.04.2012 11:02

1-economist >дело в том, что макросы писать не умею, а остальными способами как понимаю ничего не сделаешь..
первый вариант не катит - слишком рутинно
п.с. ну если что загляните сюда попозже

economist 28.04.2012 12:32

Задача слишком простая или просто не дописана. Вы вводите какие-то показатели ежедневно в таблицу, хотите чтобы каждый из них имел подпись дата/время ввода, причем так, чтобы нельзя было эту дату специально/случайно изменить. Если задача именно "протоколирование" факта изменений - можно написать более удобный макрос.
...
Макросы не так страшны - например в п. 2 приведен макрос который пишется за секунды, он готов, его просто остается вставить (так же как и вставить ячейки)... В общем, опишите задачу - поможем.

Solomon 28.04.2012 13:17

именно ежедневно вношу в таблицу до 30-40 строк следующего вида:
номер поручения дата поручения текущая дата сумма
так вот надо чтобы при вводе номера поручения текущая дата ставилась сегодняшним числом, а когда я завтра эту таблицу открою все даты не стали затрашним числом и принцип работы остался тот же

Технолог 28.04.2012 13:29

[em]дело в том, что макросы писать не умею[/em]
Если без макросов, то
1. Для ячеек, в которых будет дата, устанавливаете условное форматирование по формуле =ЕПУСТО(А1) и выбираете формат текст - белый цвет. Смысл: Если А1 пустая, то в В1 текст не виден.
2. В В1 вписываем формулу =ЕСЛИ(A1;B1;ТДАТА())
3. В1 "растягиваем" на нужные нам ячейки.
4. При открытии книги выскакивает предупреждение о циклических ссылках, которое игнорируем.
Как-то так...

Solomon 28.04.2012 13:48

ребята, вы реально монстры, где вы этому учились?
как обычному пользователю до такого дойти?

Технолог 28.04.2012 14:01

[em]ребята, вы реально монстры[/em]
Прикинь, какие монстры те, кто Excel написал! :)

Для снятия ошибки циклических ссылок:
Параметры Excel - Формулы - включить "Включить итеративные вычисления".

Solomon 28.04.2012 14:14

спасибо, все работает, только скажите как где и спомощью чего обуздать этот эксель?

Технолог 28.04.2012 14:21

[em]спасибо, все работает, только скажите как где и спомощью чего обуздать этот эксель? [/em]
Открою тайну, как я ответил на Ваш вопрос.
1. [url]http://yandex.ru/yandsearch?text=%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B0%20%D1%84%D0%B8%D0%BA%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B4%D0%B0%D1%82%D1%8B%20Excel&clid=48648&lr=35[/url]
2. Первая ссылка [url]http://www.planetaexcel.ru/forum.php?thread_id=25653[/url]
3. Скачивание примера из предпоследнего поста и разбор его;
4. Написание примера под Ваш вопрос;
5. Ответ.
:)))

Технолог 28.04.2012 14:24

9+
Вот таким способом я изучаю Excel...
;)

Solomon 28.04.2012 14:25

10-Технолог >)

economist 28.04.2012 16:09

Если случайно отключить итерации - вся таблица испортится.

Технолог 29.04.2012 12:30

[em]Если случайно отключить итерации - вся таблица испортится. [/em]
Даже если войти в редактирование формулы и выйти, то уже значение сбросится на 1900. Так что придется автору знакомиться с VBA...
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Target.Offset(0, 1).Value = Now()
End Sub
А дальше уже вводить проверки на введенное значение и т.д, и т.п...

economist 29.04.2012 23:56

Технолог - ну раз мы монстры - дождемся все-таки реального примера в XLS (надеюсь это не гостайна, ПД или таблица откатов олимпстроя дальневосточных североморцев газмяса). А затем допишем макрос на изменение столбца D или какого там... И выложим-таки файлик... Кстати, в Lotus 1-2-3 и SuperCalc была формула, вычисляемая 1 раз, в момент ввода в ячейку слева.


Текущее время: 13:40. Часовой пояс GMT +3.