Как в ListObjects подключить событие SelectionChange? Цель: отобразить в ячейке выбранный текст в ListObjects.
Код
Private Sub Worksheet_Activate()
Dim ws As Worksheet
Set ws = ActiveSheet
Set lo = ws.ListObjects("Table4") '
' AddHandler lo, "SelectionChange", AddressOf Table4_SelectionChange
End Sub
Sub Table4_SelectionChange(ByVal Target As Range)
MsgBox "The selection in the list object has changed."
End Sub
Цель: подключить CSV файл к Excel и проанализировать его.
Пример анализа DateTime: 1. Группировки; 2. Сортировки; 3. Фильтры; 4. Построение графиков; 5. Вычисления DateTime. (предположително)
1.ДатаВремя хранить
- Вар-1. в одном поле: DateTime или - Вар-2. в разных полях: Date, Time, Миллисекунды, часовой пояс?
Или применять Вар-1 и Вар-2 в зависимости от обстоятельств и допускается оба варианта? Чтобы можно было подключить CSV в Excel без дополнительных настроек? Или с минимальными настройками: например изменить в Excel формат поля таблицы. Ну или в PowerQuery что-нибудь "подкрутить" по мелочи.
Т.е. чтобы данные прошли путь CSV -> PowerQuery -> Excel.
Под максимальный DateTime я понимаю :yyyy-MM-dd HH:mm:ss.MS +zone Пример: 2024-03-19 13:18:31.395 +03:00.
2. Для примера я сделал несколько столбцов с различными вариантами представления DateTime.
3. Мои опасения. 3.1 Если использовать Column1(или Column2). PowerQuery распознал тип поля как Текст.
Я боюсь, что если буду строить сводную таблицу или использовать таблицу полученную из запроса в других таблицах, то данные не будут распознаны как ДатаВремя. 3.2 Если использовать Column3. В Column3 не отображаются милисекунды и часовй пояс.
Тогда Column3 нужно использовать вместе с полями Column7(миллисекунды), Column8(часовой пояс).
PowerQuery В редакторе изображение нормально отображается. При просмотре плохо. Поэтому прилагаю ссылку на и изображение. ссылка на изображение https://i.ibb.co/zxTKwQr/118332915257742.png
Excel В редакторе изображение нормально отображается. При просмотре плохо. Поэтому прилагаю ссылку на и изображение. Ссылка на изображение https://i.ibb.co/V3CHQvC/552662915259037.png
Код
let
Источник = Csv.Document(File.Contents("E:\Projects\39\01_pr\01\2024-03-21_15-24-36.csv"),
[Delimiter="|",
Columns=10,
Encoding=1251]),
#"Измененный тип" = Table.TransformColumnTypes(Источник,
{
{"Column1", type text},
{"Column2", type text},
{"Column3", type datetime},
{"Column4", type datetime},
{"Column5", type date},
{"Column6", type time},
{"Column7", Int64.Type},
{"Column8", type text},
{"Column9", type text},
{"Column10", type text}
}
)
in
#"Измененный тип"
Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?, Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?
написал: Если не нужна инфо в каком часовом поясе получено это время и дата, то убирайте. Но если данные к вам приходят из разных часовых поясов, а вы хотите анализировать события, а в CSV - время местное, то... Думайте сами. Почитайте вот это для старта. Особенно часть про "Как Excel на самом деле хранит и обрабатывает даты и время". Про типы данных в PQ и не говорю пока...
Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?, Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?
написал: Формат выставляете в XLS: Ctrl-1 (или ПКМ - формат ячеек)(все форматы)в Тип копируете: ГГГГ-ММ-ДД чч:мм:сс,000Запятая перед миллисекундами - это ваш разделитель десятичной части чисел.У меня, например - точка.
Можно конечно... Недостаток: предполагается подключать разные файлы csv и такой способ решения приведёт к необходимости настраивать для каждого раза форматирование в таблице.
Делать кнопку для автоматической настройки? Или можно как-то по другому? Или всё таки лучше чтобы в запросе настраивалось форматирование?
Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?, Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?
написал: Как я понял, TZ можно вручную только вести, а вот формат ячейки задать можно (запятая - это десятичный разделитель в вашем Excel):ГГГГ-ММ-ДД чч:мм:сс,000
Если вопрос поставить по другому: какой формат даты должен быть в csv чтобы отобразить дату "2024-03-19 13:18:31.395"?
В идеале хотелось бы в Excel таблице получить "2024-03-19 13:18:31.395 +03:00". Но не принципиально. Можно и без "+03:00", а только "2024-03-19 13:18:31.395" Какие разделители между датой время - не принципиально...
Конечная цель: чтобы потом можно было как-то анализировать датуВремя: диаграммы какие-нибудь построить, сгруппировать по периоду...
Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?, Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?
написал: Тогда уберите последний шаг с преобразованием типов. Но тогда в Excel попадет текст. Так устроит?
В идеале хотелось бы в Excel таблице получить "2024-03-19 13:18:31.395 +03:00". Но не принципиально. Можно и без "+03:00", а только "2024-03-19 13:18:31.395"
А в целом, честно говоря, даже не знаю как лучше... Конечная цель: чтобы потом можно было как-то анализзировать датуВремя: диаграммы какие-нибудь построить, сгруппировать по периоду... А с чём столкнусь в будущем не знаю... Может у вас есть опыт...
Может лучше рассмотреть разбить на отдельные столбцы: дата - "2024-03-19"; время - "13:18:31.395";
Или лучше хранить в одном? Что посоветуете? Спасибо.
Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?, Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?
написал: если расскажете что вы хотите получить на выходе. Из исходного сообщения это не ясно совсем. Новые колонки? Какие? Или преобразовать существующую с datetimezone? Во что?
Как сделать чтобы формат датаВремя в Excel таблице соответствовал подключённому csv файлу?
Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?, Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?
написал: excel_pl , ваш запрос прекрасно справился с преобразованием типа в type datetimezone. Отсюда можете получить datetime (DateTime.From), только date (Date.From), только time (Time.From). Или даже все на свете в виде записи со многими полями (DateTimeZone.ToRecord). Даже если просто выгрузить таблицу на лист, то в ячейке вы получите просто дату + время.
Не могли бы вы подробнее описать как исправить запрос...
Код
= Table.TransformColumnTypes(#"Повышенные заголовки",
{
{"DateTime", type datetimezone},
{"Level", type text},
{"Message", type text}
}
)
```
```shell
let
Источник = Csv.Document(File.Contents("e:\Projects\fl\Log-11224-2024-03-19_1320240319.csv"),[Delimiter="|", Columns=3, Encoding=1251, QuoteStyle=QuoteStyle.None]),
#"Повышенные заголовки" = Table.PromoteHeaders(
Источник,
[PromoteAllScalars=true]),
#"Измененный тип"
= Table.TransformColumnTypes(
#"Повышенные заголовки",
{
{"DateTime", type datetimezone},
{"Level", type text},
{"Message", type text}})
in
#"Измененный тип"
Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?, Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?
Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?, Как сделать чтобы формат датаВремя в запросе соответствовал подключённому csv файлу?
написал: excel_pl , "седлайте" его там, где вы сделали кросс
Нашёл файл в котором создан запрос... Я не помню как это сделал...
Там сделано: - один запрос; - в строке подключения нужно указывать путь к файлу; - sql запрос можно редактировать.
Моя цель: - чтобы в строке подключения не прописывать путь к файлу, а использовались таблицы текущего файла; - сделать несколько запросов; - каждый отдельный запрос отображать на нескольких вкладках.
Я не могу понять: - как создать запрос чтобы можно было редактировать строку подключения и запрос.
написал: А зачем Вы вообще SQL-запрос в Excel проверяете?Получить данные для Excel из БД - ок. И при подключении к БД вы в PQ можете написать SQL-запрос.Но нафига SQL запрос для вычисления внутри Excel? Почему именно SQL-запрос, почему не код на Python/PhP/С? Ну как бы обратный вопрос - почему в работе с БД нельзя формулами Excel что-то написать?В PQ Вы можете сделать то же самое, но уже не на диалекте SQL, а кодом на M.Правда, тут огромный плюс - все, что Вам необходимо, можно сделать кнопками и PQ сам сгенерирует для Вас код.
Хочу при необходимости, по быстрому, на коленке накидать таблицы, данные и протестировать минимальные SQL запросы.
Не связываясь с БД, Python/PhP/С, формулами...
Как в Excel или PQ вставить запрос SQL?
Пробую через окно(см. картинку), а оно перебрасывает в PQ... Куда в PQ вставить запрос, не понимаю...
SELECT C.id AS "Course.id", S.id AS "Student.id", S.Name AS "Student.Name"
FROM Course C, Student S
WHERE NOT EXISTS (
SELECT *
FROM CoursesStudent CS
WHERE CS.CourseId = C.id AND CS.StudentId = S.id
)
Как седлать SQL запрос из двух таблиц? Т.е. у меня есть SQL запрос. Я хочу его проверить. Просто вставить и чтоб он отработал. Exel переключает в PQ. А где он там вставляется не понятно...
На шаге, цитата: "на вкладке Данные или на вкладке Power Query находим команду Получить данные - Объединить запросы - Объединить (Get Data - Merge Queries - Merge):" и далее по тексту.... У меня не активна кнопка "ок"
Вопросы. 1. как совместить дни(часы, минуты) когда фотоловушка срабатывает с днями(часы, минуты) когда ловушка не работает? Т.е. я получаю данные года ловушка срабатывает. Для полного анализа срабатывания нужны дни когда фотоловушка не срабатывает. Т.е. в резуkьтате должна получить таблица в которой будут данные: срабатывания + несрабатывания. 2. Может есть в общем готовые решения для таких задач?
Описание. Получаю данные по срабатыванию фотоловушки в формате: - Имя; - Размер; - ДатаВремя_создания. Данные будут поступать периодически не предсказуемо: раз в неделю, раз в месяц, раз в квартал.
Минимальные ожидания. Логика: - в файле "ФотоЛовушкаГлав.xlsx" вставил на лист данные `Имя`, `Размер`, `ДатаВремя_создания`(Или экспортировать); - в файле "ФотоЛовушкаГлав.xlsx" нажал кнопку Excel: данные перенеслись на лист с полным календарём; - автоматически построились графики;
Главная цель получить полный календарь за год (или за меньшие периоды). Где будут содержаться данные с днями когда ловушка срабатывает и когда ловушка не срабатывает. Каждый день должен детализирован до минуты. По возможности, чтобы можно было проанализировать сразу несколько дней.
Максимальные ожидания. Ожидаемая логика: - Открыл файл ФотоЛовушкаГлав.xlsx; - В файле ФотоЛовушкаГлав.xlsx прописал путь к папке с файлами; - в файле "ФотоЛовушкаГлав.xlsx" нажал кнопку Excel: данные перенеслись на лист с полным календарём; - автоматически построился график;
Примечание. Признаюсь сразу: не знаю, что хочу.... Хочу хоть как-то проанализировать принцип срабатывания фотоловушки... Навксидку, наверное, было бы неплохо построить график: - количество срабатываний: - в месяц; - в день; - в час; - в минуту;
- размер файлов генерируемых фотоловушкой: - в месяц; - в день; - в час; - в минуту;
Буду признателен за любый полные или частичные решения, предложения, рекомендации...
На вскидку я так понимаю, что нужно выполнить следующую логику: 1. Получить текст ячейки; 2. Результат: ЧУП «Мобильный город» Вороново, ул. Литовчика, 43
Пн: выходной Вт - Пт: 9:30 - 16:30 Сб: 9:30 - 13:30 Вс: выходной 375296435132 3. Логика распределения строк текста: п.1 Первую строку перенести в поле "Организация"; п.2 Вторую строку разделить по первой запятой ","; п.3 Вторую строку первое слово перенести в поле "Город"; п.4 Вторую строку остальную часть перенести в поле "Адрес"; п.5 Последню строку перенести в поле "Телефон"; п.6 Оставшийся текст перенести в поле "График";
Вопрос. Правильно ли я понимаю логику ? Буду признателен если кто подскажет фрагменты кода по каждому(или по отдельным) пункту или всё решение...
Не понимаю... Мне кажется я неточно изложил вопрос. Если, что под "произвольный текст" я понимаю следующее: 0:00 Подставляет значение аргумента 0:03 "нов_текст" вместо значения 0:05 аргумента "стар_текст" 0:08 в текстовой строке. 0:10 Функция ПОДСТАВИТЬ используется, 0:20 когда нужно заменить определенный текст в текстовой строке; и т.д.
У меня сейчас текст находится в столбце С Столбец С = 00:00 произвольный текст Мне нужно (условно говоря) Столбец E = 00:00 Столбец F = произвольный текст
Дополнение Значение таймера: первым числом может иметь трёхзначное число. Типа так - 326:00.
Цитата
написал: Данные - > Текст по столбцам
Как? Данные - > Текст по столбцам - > Символ разделителя - > пробел?
Цитата
написал: Чтобы совсем уж надежно (вдруг длина строки 200 символов?)=ПОДСТАВИТЬ(C4;F4&" ";) (в F4 левая часть)