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

Вход

Регистрация

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

 

= Мир MS Excel/расчет разности дат - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
расчет разности дат
luny Дата: Суббота, 28.11.2015, 11:51 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
есть в ворде табличка в которой просчитывается наработка оборудования, нужно в строках 2,3,8 пересчитать данные на сегодняшний МЕСЯЦ (т.е. на 1 число этого месяца) относительно даты ввода в эксплуатацию (если указано что сентябрь 1990 года - считать что ввод был 01,09,1990). помогите кто чем может пожалуйста
К сообщению приложен файл: 8627070.doc (30.0 Kb)
 
Ответить
Сообщениеесть в ворде табличка в которой просчитывается наработка оборудования, нужно в строках 2,3,8 пересчитать данные на сегодняшний МЕСЯЦ (т.е. на 1 число этого месяца) относительно даты ввода в эксплуатацию (если указано что сентябрь 1990 года - считать что ввод был 01,09,1990). помогите кто чем может пожалуйста

Автор - luny
Дата добавления - 28.11.2015 в 11:51
Gustav Дата: Понедельник, 30.11.2015, 12:13 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Предлагаю вариант решения через макрос, который автоматически выполняется при открытии документа. В качестве названий месяцев использовал русские - в соответствии со своей локалью. В этом случае строка "сентябрь 1990" переводится при помощи функции DateValue в корректную дату 01.09.1990. Полагаю, что для правильной работы в украинской локали надо будет восстановить "серпень 1990". Склонениями существительных после чисел не заморачивался, поэтому, например, "годин" (часов) будет подставляться и к 1, и к 2 и к 5. То же касается и лет с месяцами. Если непременно нужны правильные склонения, то это дальнейшая кропотливая работа - дерзайте! Точка с запятой в качестве разделителя фраз про годы и часы в строке "4." обязательна и неизменна.

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

К сообщению приложен файл: lunyword.doc (51.5 Kb)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеПредлагаю вариант решения через макрос, который автоматически выполняется при открытии документа. В качестве названий месяцев использовал русские - в соответствии со своей локалью. В этом случае строка "сентябрь 1990" переводится при помощи функции DateValue в корректную дату 01.09.1990. Полагаю, что для правильной работы в украинской локали надо будет восстановить "серпень 1990". Склонениями существительных после чисел не заморачивался, поэтому, например, "годин" (часов) будет подставляться и к 1, и к 2 и к 5. То же касается и лет с месяцами. Если непременно нужны правильные склонения, то это дальнейшая кропотливая работа - дерзайте! Точка с запятой в качестве разделителя фраз про годы и часы в строке "4." обязательна и неизменна.

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


Автор - Gustav
Дата добавления - 30.11.2015 в 12:13
luny Дата: Вторник, 01.12.2015, 17:02 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
спасибо, вроде бы то что я и хотел... не будет сбоев в макросе если таблица будет не одна или еще что-либо?
зы не совсем понял как заменить русс месяц на укр месяц.


Сообщение отредактировал luny - Вторник, 01.12.2015, 17:17
 
Ответить
Сообщениеспасибо, вроде бы то что я и хотел... не будет сбоев в макросе если таблица будет не одна или еще что-либо?
зы не совсем понял как заменить русс месяц на укр месяц.

Автор - luny
Дата добавления - 01.12.2015 в 17:02
Gustav Дата: Вторник, 01.12.2015, 17:41 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
не будет сбоев в макросе если таблица будет не одна или еще что-либо?

Разумеется, будут. Процедура рассчитана на одну таблицу в документе под номером 1. Если надо несколько таблиц, то надо добавлять цикл по таблицам. И, честное слово, в этом случае настоятельно рекомендую миграцию с этим бланком в Excel.
не совсем понял как заменить русс месяц на укр месяц

Пуск \ Панель управления \ Часы, язык и регион \ Язык и региональные стандарты \ Формат: Украинский
Только не заменить, а "включить" обработку месяцев на украинском языке. В этом случае в Окне отладки будет получаться:
? DateValue("серпень 1990")
01.08.1990

А ? DateValue("сентябрь 1990") вызовет ошибку. А если поставить Формат: Русский, то будет всё с точностью до наоборот.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
не будет сбоев в макросе если таблица будет не одна или еще что-либо?

Разумеется, будут. Процедура рассчитана на одну таблицу в документе под номером 1. Если надо несколько таблиц, то надо добавлять цикл по таблицам. И, честное слово, в этом случае настоятельно рекомендую миграцию с этим бланком в Excel.
не совсем понял как заменить русс месяц на укр месяц

Пуск \ Панель управления \ Часы, язык и регион \ Язык и региональные стандарты \ Формат: Украинский
Только не заменить, а "включить" обработку месяцев на украинском языке. В этом случае в Окне отладки будет получаться:
? DateValue("серпень 1990")
01.08.1990

А ? DateValue("сентябрь 1990") вызовет ошибку. А если поставить Формат: Русский, то будет всё с точностью до наоборот.

Автор - Gustav
Дата добавления - 01.12.2015 в 17:41
luny Дата: Вторник, 01.12.2015, 17:52 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
если таблицы 2 и нужная всегда вторая, все равно ситуация сильно не изменится?

Пуск \ Панель управления \ Часы, язык и регион \ Язык и региональные стандарты \ Формат: Украинский

с этим понял
 
Ответить
Сообщениеесли таблицы 2 и нужная всегда вторая, все равно ситуация сильно не изменится?

Пуск \ Панель управления \ Часы, язык и регион \ Язык и региональные стандарты \ Формат: Украинский

с этим понял

Автор - luny
Дата добавления - 01.12.2015 в 17:52
Gustav Дата: Вторник, 01.12.2015, 18:31 | Сообщение № 6
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Ну, если таблицы абсолютно одинаковые по структуре и номерам нужных строк, то можно добавить внешний цикл по всем имеющимся таблицам:
[vba]
Код
Dim i As Integer

For i = 1 to КоличествоТаблиц
    Set tbl = ThisDocument.Tables(i)
    ...
    'бла-бла-бла - обработка одной таблицы
    ...
    Set tbl = Nothing
Next i
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеНу, если таблицы абсолютно одинаковые по структуре и номерам нужных строк, то можно добавить внешний цикл по всем имеющимся таблицам:
[vba]
Код
Dim i As Integer

For i = 1 to КоличествоТаблиц
    Set tbl = ThisDocument.Tables(i)
    ...
    'бла-бла-бла - обработка одной таблицы
    ...
    Set tbl = Nothing
Next i
[/vba]

Автор - Gustav
Дата добавления - 01.12.2015 в 18:31
luny Дата: Вторник, 01.12.2015, 18:33 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
простите, виноват...сейчас подолью пример через минутку
К сообщению приложен файл: 6651483.doc (38.5 Kb)


Сообщение отредактировал luny - Вторник, 01.12.2015, 18:36
 
Ответить
Сообщениепростите, виноват...сейчас подолью пример через минутку

Автор - luny
Дата добавления - 01.12.2015 в 18:33
luny Дата: Вторник, 01.12.2015, 18:38 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
подумав - в ощем спасибо...думаю что дальше я сам...там действительно в первой таблице все меняется и строки и содержание - разнесу на разные страницы и буду печатать так

еще раз спасибо
 
Ответить
Сообщениеподумав - в ощем спасибо...думаю что дальше я сам...там действительно в первой таблице все меняется и строки и содержание - разнесу на разные страницы и буду печатать так

еще раз спасибо

Автор - luny
Дата добавления - 01.12.2015 в 18:38
Gustav Дата: Вторник, 01.12.2015, 18:51 | Сообщение № 9
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
сейчас подолью пример через минутку

Для этого второго примера нужно всего лишь изменить 1 на 2, так как нужная таблица теперь 2-я:
[vba]
Код
Set tbl = ThisDocument.Tables(2)
[/vba]
А вообще в любом документе можно сориентироваться по номерам таблиц при помощи несложного макроса:
[vba]
Код
Sub findTables()
    Dim i As Integer
    For i = 1 To ActiveDocument.Tables.Count
        Debug.Print i, ActiveDocument.Tables(i).Cell(1, 2).Range.Text
    Next
End Sub
[/vba]
думаю что дальше я сам

Ок, дерзайте!


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
сейчас подолью пример через минутку

Для этого второго примера нужно всего лишь изменить 1 на 2, так как нужная таблица теперь 2-я:
[vba]
Код
Set tbl = ThisDocument.Tables(2)
[/vba]
А вообще в любом документе можно сориентироваться по номерам таблиц при помощи несложного макроса:
[vba]
Код
Sub findTables()
    Dim i As Integer
    For i = 1 To ActiveDocument.Tables.Count
        Debug.Print i, ActiveDocument.Tables(i).Cell(1, 2).Range.Text
    Next
End Sub
[/vba]
думаю что дальше я сам

Ок, дерзайте!

Автор - Gustav
Дата добавления - 01.12.2015 в 18:51
luny Дата: Вторник, 01.12.2015, 19:25 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 101
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
еще момент - когда добавил макрос в оригинальный файл начало огрызаться на эту строку
[vba]
Код
  hours2 = arr(0)
[/vba]
 
Ответить
Сообщениееще момент - когда добавил макрос в оригинальный файл начало огрызаться на эту строку
[vba]
Код
  hours2 = arr(0)
[/vba]

Автор - luny
Дата добавления - 01.12.2015 в 19:25
Gustav Дата: Вторник, 01.12.2015, 19:37 | Сообщение № 11
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Не знаю. У меня всё хорошо. Раз что-то не так, то надо в отладчике смотреть, что приходит к этому присваиванию в arr(0). Тут мне дистанционно, увы, не помочь...
Возможно, после точки с запятой вставили еще перевод строки, а не только пробел. Блин, на этих строчках так всё зыбко... Боюсь, будете иметь регулярные проблемы, если с файлами будет работать толпа пользователей...


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 01.12.2015, 19:42
 
Ответить
СообщениеНе знаю. У меня всё хорошо. Раз что-то не так, то надо в отладчике смотреть, что приходит к этому присваиванию в arr(0). Тут мне дистанционно, увы, не помочь...
Возможно, после точки с запятой вставили еще перевод строки, а не только пробел. Блин, на этих строчках так всё зыбко... Боюсь, будете иметь регулярные проблемы, если с файлами будет работать толпа пользователей...

Автор - Gustav
Дата добавления - 01.12.2015 в 19:37
  • Страница 1 из 1
  • 1
Поиск:

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