Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

27 Май 2019, 04:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Здравствуйте! Прикреплённый файл - таблица с показан  (Прочитано 4579 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ForumOOo (бот)

Offline Offline

Сообщений: 687


« Стартовое сообщение: 12 Ноябрь 2014, 18:23 »

Компонент: Calc
Версия продукта:
Сборка: 9bb7eadab57b6755b1265afa86e04bf45fbfc644
ОС: Windows 8

Здравствуйте!

Прикреплённый файл - таблица с показаниями температур за 2012-2014 (по сей день) год. Мне необходимо создать макрос, который удалил бы все строки за исключением тех, время которым соответствует либо
12:00 либо 16:00. Затем, на основе полученных данных, макрос должен в первом столбце оставить только дату (время удалить) вида "YYYY-MM-DD" и соединить строки (по две штуки) друг с другом, высчитывая
среднюю между температурами. Возможно ли такое?

Я пробовал писать макрос для удаления. Получилось следующее:
Option Explicit

Sub Macro1
   Dim j, i as integer
   Dim Doc, Sheet as object
   
   j = 0
   Doc = StarDesktop.CurrentComponent
   Sheet = Doc.CurrentController.ActiveSheet
   
   For i = 1 to 8347
      If j >= 2 and j

Тестовый файл: http://forumooo.ru/attachments/upload/t.ods (105.56 КБ)

--
Подпись: Feers1de
Записан
Feers1de
Участник
**
Offline Offline

Сообщений: 9


« Ответ #1: 12 Ноябрь 2014, 18:28 »

Не вместился почему-то макрос:
Option Explicit

Sub Macro1
   Dim j, i as integer
   Dim Doc, Sheet as object
   
   j = 0
   Doc = StarDesktop.CurrentComponent
   Sheet = Doc.CurrentController.ActiveSheet
   
   For i = 1 to 8347
      If j >= 2 and j <= 8 Then
         Sheet.Rows.removeByIndex(i, 1)
      End If
      
      If j = 8 Then
         j = 0
      Else
         j = j + 1
      End If
   Next i

После использования макроса получился какой-то бардак - не то, что я ожидал.
Записан
Feers1de
Участник
**
Offline Offline

Сообщений: 9


« Ответ #2: 12 Ноябрь 2014, 18:44 »

Просьба оную тему удалить. Не туда написал.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 12 Ноябрь 2014, 18:45 »

Добро пожаловать на форум!
Боюсь, задача решения не имеет... Потому как, наверное, описка в постановке задачи: во всей таблице ни одного показания на 16:00...

Уточни, плз, еще раз: выбрасываем все значения кроме двух за день, среднее берем только по ним?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #4: 12 Ноябрь 2014, 18:59 »

В общем, без макроса здесь на пять минут преобразований... Если нужен только результат, то он в приложенном файле. А если нужен способ решения - опишу завтра

* Возможный результат.ods (60.64 Кб - загружено 14 раз.)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Feers1de
Участник
**
Offline Offline

Сообщений: 9


« Ответ #5: 12 Ноябрь 2014, 19:18 »

Прошу прощения, 15:00. Ошибся. Желательно и способ решения узнать...
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #6: 12 Ноябрь 2014, 23:22 »

Ну, вот так:

1. Первым делом добавляем заголовки колонок — с ними будет проще работать, чем с названиями Столбец A/Столбец B. Вставляем новую строку выше первой и вписываем Дата-Температура.
2. Данные в таблице сейчас в виде текстовых строк, а не в виде «настоящих» дат и чисел. В этом можно убедиться, если нажать Ctrl+F8 (меню Вид - Выделение значений цветом) или посмотреть на значение в строке формул (перед каждым значением стоит апостроф). На данном этапе текстовые дата/время нам на руку — для текстовых строк есть возможность указать фильтр Содержит/Не содержит. Выбираем Данные-Фильтр-Стандартный фильтр и задаем условие "Дата не содержит 12: И Дата не содержит 15:" (ну, или "Дата не заканчивается на 12:00 И Дата не заканчивается на 15:00", но тут на четыре ноля больше писать). Смело удаляем все отфильтрованные данные (кроме строки заголовков), удаляем фильтр, отображаем скрытые строки.
3. Теперь преобразуем текстовые строки в значения. Можно это сделать через два вызова Поиск/Замена, отдельно для каждого столбца. А можно через Данные-Текст по столбцам.
4. Можем отсортировать получившиеся данные по возрастанию дат — это избавит нас от пустых строк (сдвинет их ниже данных)
5. Выбираем Данные-Сводная таблица-Создать, указываем, что даты будут заголовками строк, а данными — средние значения температур.
Вот вроде и всё...
Да, кстати, там у тебя в данных за второе января позапрошлого года не было измерения в три часа вечера... Не знаю, существенно ли это.


* Температуры.gif (1671.21 Кб, 640x480 - просмотрено 167 раз.)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Feers1de
Участник
**
Offline Offline

Сообщений: 9


« Ответ #7: 13 Ноябрь 2014, 08:26 »

Премного благодарен Вам! Очень информативный ответ. Да ещё и с gif'кой. Что бы я без Вас делал...

Ещё один вопрос - каким образом Вы сводную таблицу перенесли в основную и мгновенное удалили её? Это какое-то сочетание клавиш?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #8: 13 Ноябрь 2014, 08:57 »

Исходные данные остались там же, где и были.
Calc для сводной таблицы создал новый лист... Он всегда так делает, если явно не указать в Параметрах положение. Просто название листа длинное, ярлычок получился широкий и вытеснил ярлык исходного листа с экрана... Да там, на гифке, должно быть видно (внизу слева), что надпись Лист 1/1 меняется на Лист 2/2
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Feers1de
Участник
**
Offline Offline

Сообщений: 9


« Ответ #9: 13 Ноябрь 2014, 09:23 »

Тогда ещё вопрос. Каким образом можно удалить "причуды сводной таблицы"? То есть мне лично не нравится как отображаются заголовки столбцов. Почему они не текстовые как в исходном листе?
Записан
Feers1de
Участник
**
Offline Offline

Сообщений: 9


« Ответ #10: 13 Ноябрь 2014, 09:29 »

Уже разобрался. Спасибо _)
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #11: 13 Ноябрь 2014, 09:36 »

Это просто:
1. Стоя на любой ячейке сводной таблицы жмём Ctrl+* (Пометить область данных) - Calc выделит весь диапазон
2. Ctrl+C или Ctrl+Insert - обычное копирование в буфер обмена
3. Здесь же, не сходя с места - Ctrl+Shift+V (или Правка - Специальная вставка), ставим птички на Текст (заголовки столбцов), Числа (собственно температуры), Даты и время (колонка дат) и Форматы (иначе даты отобразятся как 40909, 40910, 40911...) и OK


* Специальная вставка.png (20.77 Кб, 309x378 - просмотрено 16 раз.)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Feers1de
Участник
**
Offline Offline

Сообщений: 9


« Ответ #12: 13 Ноябрь 2014, 09:38 »

Я решил это обычным копированием данных (Веселый)
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!