Есть текстовые значения в таблице со столбцом ar[АРТИКУЛ], мне надо их воспользовать в запросе sql в разделе where Ниже приведен код использования даты в запросе sql который рабочий, дата находится в другом документе.
Код
let
MyData = Text.From(Excel.Workbook(File.Contents("D:\test\test.xlsx", null,true,{[Item="key1",Kind="Table"]}[Data]{[Parameter="MyData"]}[Value])
Источник=Oracle.Database("OMPAW", [Query="
With prm as (Select to_date('" & MyData & "', 'dd.mm.yyyy') as dat from dual)
Далее идёт SQL запрос
Мне надо точно так же, но в MyData вставить текст - все записи ar[АРТИКУЛ] через разделитель ',' Text.Combine([АРТИКУЛ],"','") - не знаю как правильно прописать Ещё отличие что не надо брать данные для MyData из другого документа, таблица ar и запрос sql находятся в одном документе. файл, наверное, сильно не поможет, я могу в него поместить только таблицу ar, код sql Oracle работает только в рабочей сети Буду благодарна за помощь.
Добрый день! Необходима помощь по Power Query. Надо в столбце KPI заменить значения например "зап.части, руб" на "ZR" и есть список то ЧТО заменить и НА что зап.части, руб ZR деталь, шт DQ смесь, банки SQ стекло, руб GR
Я прочитала что есть функция Table.TransformColumns, но как передать не таблицу а список прописанных значений не знаю. Видела такой вариант, но мне не подходит, т.к. у меня слово ЧТО заменить с пробелами и запятыми
Код
= Table.TransformColumns(YourTable, {"Cars", each Record.FieldOrDefault([Volkswagen = "VW", Renault = "RN", Dacia = "DC"],_,_)})
Спасибо большое за разъяснения и ссылки. Да, смотрела через Set прежде чем писать на форум, но надеялась что я проглядела = что такое существует, но я не нашла. Файлом пользуется много человек и таких файлов не один по разным регионам. В общем макросы в данном случае это не решение, т.к. чаще всего по умолчанию у других они отключены.
Можно ли пойти следующим путем: если файл открылся в режиме ReadOnly, то я его закрою макросом же и открою заново в конце обработки, но чтобы он выдавал сообщение. У меня при обработке макросами сообщение не выдает (тихо открывает в readonly, если недоступен режим чтения и переходит к обработке следующего файла. Причем в коде строчки Application.DisplayAlerts=False нету.
Что бы это уведомление выскакивало надо что-то в Open прописать? IgnoreReadOnlyRecommended = False ?
Когда я открываю файл экселя на общем диске и кто-то в нем сидит, мне пишет имя пользователя, того, кто сидит. Можно как то в переменную получить это имя пользователя в код VBA?
(WriteReservedBy пишет мое имя пользователя, не смотря на то что файл открыт другим сотрудником и у меня документ открыт в режиме чтения.)
Имеется массив arr (1 to 5, 1 to 4). Есть Listbox из ActiveX Как заполнить ListBox этим массивом? Важно! Без участия ячеек = не беря заполнение из диапазона на листе. (В тесте диапазон берется из ячеек [A8:D12], в фактическом использовании – создается массив и он заполняется виртуально)
Мои попытки с .List успехом не увенчаплись, не работает. Неужели только циклом в каждую ячеечку, прописывать в ListBox? (Мне не обязательно, будет это ListBox из ActiveX или из элементов управления.)
Скрытый текст
Не работает:
Код
Sub test()
arr = [A8:D12]
Set lbx = ThisWorkbook.Sheets("Лист1").ListBoxUser
lbx.List = arr
End Sub
Вставка в книгу данных из другой с возможностью обновления по запросу., Как вставить данные в книгу из выгрузки-xlsx и обновлять через контекстное меню обновить (без копи-пейста).
У меня не сразу, но получилось таки сделать импорт. Спасибо за руководство! Если смотреть ваши выгрузки import. xlsx и copy of import. xlsx То ms query неверно обрабатывает данные со временем создания, первый и шестой столбик. Я не нашла в редакторе, как задать формат. Это возможно?
MS Query не вырезан на работе, а PQ нет, потому что его надо доустанавливать, он не входит штатно в excel 2013, что бы согласовать установку надо десять кругов ада пойти и не факт.
Вставка в книгу данных из другой с возможностью обновления по запросу., Как вставить данные в книгу из выгрузки-xlsx и обновлять через контекстное меню обновить (без копи-пейста).
Вставка в книгу данных из другой с возможностью обновления по запросу., Как вставить данные в книгу из выгрузки-xlsx и обновлять через контекстное меню обновить (без копи-пейста).
Пробовала, не получается. Если файл открыт, то в следующем шаге «проверить соединение» пишет, что «проверка соединения завершена успешно», жмешь Далее он пишет «выбранный файл используется. Закройте файл перед импортом.» закрываю файл, пишет: «не удалось подключиться к серверу. Причина: внешняя таблица не имеет предполагаемый формат» Привет выгрузки прикрепила.
Вставка в книгу данных из другой с возможностью обновления по запросу., Как вставить данные в книгу из выгрузки-xlsx и обновлять через контекстное меню обновить (без копи-пейста).
Access в работе не использую вообще. А так, проще уж тогда выгрузку пересохранить как txt с табами и подлючить для обновления (на вкладке Данные) Но! Хотелось бы знать как экселевскую книгу подключить. Это полезно не только именно для этой задачки, но и для будущих.
Вставка в книгу данных из другой с возможностью обновления по запросу., Как вставить данные в книгу из выгрузки-xlsx и обновлять через контекстное меню обновить (без копи-пейста).
Именно АйТи! На прошлой работе много пользовалась Power Query. А сейчас никак. Ищу возможности через подключение данных или может что-то есть в PowerPivot?
Вставка в книгу данных из другой с возможностью обновления по запросу., Как вставить данные в книгу из выгрузки-xlsx и обновлять через контекстное меню обновить (без копи-пейста).
Делаю выгрузку из САП и сохраняю в файл xlsx на диске. В текущем процессе – я открываю второй файл, копи-пэйст выгрузку в этот второй файл, протягиваю формулы, обновляю сводные – мой отчет готов, рассылаю.
Хотелось бы так:
Я сохранила выгрузку. Открываю второй файл, нажимаю на листе “обновить” – на листе появляются данные из только что сохраненной выгрузки. Далее надеюсь освоить PowerPivot построенный на основании этой обновленной выгрузки, и получать отчет без промежуточных звеньев и протягиваний формул.
На работе стоит Excel 2013 Professional Plus. PowerPivot есть, Power Query нет! и пока не будет.
Как я могу подлючить этот файл-выгрузку если он в xlsx?
У меня в группе «Данные» 1100 вариантов: Access, интернет, текст, БД. А Excel-книгу как?
1) Все отдельностоящие слова полностью из заглавных букв сделать в формате Первая Буква Заглавная (Proper). Например: «НОВЫЙ СВЕТ СоЛнЦе Луч9 20 САДОВОДСТВО дорога» превратить в: «Новый Свет СоЛнЦе Луч9 20 Садоводство дорога» ?
2) Вытащить улицу и номер дома часто можно с помощью следующего правила: смотрим первую попадающуюся цифру в строке и берем то слово перед ней, которое попадается первым написанным с большой буквы. Пример: «Санкт-Петербург, Обводный канал 45/1 строение 25Б Литер М» вытащит строку «Обводный 45»., потому что 45 - первая цифра в строке. Обводный - первое написанное с заглавной буквы перед 45.
3) Есть улицы-исключения в их название входит цифра (пример: 8 линия В.О. д.10) У меня имеется список исключеений. Как для них сделать чтобы они вытащили ближайшее впереди и ближайший сзади номер? Например "Санкт-Петербург г. 8-я Красноармейская ул. 27 кв.40" -> "8 Красноармейская 27" (?:Кадетская|линия|Советская|Рабфаковский|Предпортовый|Января|Красноармейская|Утиная|Мая|Комсомольская|Муринский|Лахта|Верхний|_) Пыталась сделать сама. Но именно эти задачки у меня не получились. Подскажите, пожалуйста, как они решаются?
Код
Function street_extract_test()
'если слово в строке полностью из заглавных букв превратить его в "Первая Заглавная"
txt = "НОВЫЙ СВЕТ СоЛнЦе Луч9 20 САДОВОДСТВО дорога"
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "([А-ЯЁ]+{2,})"
regex.Global = True
'txt1 = regex.Replace(txt, Application.WorksheetFunction.Proper("$1"))
'Первая цифра в строке + первое перед этой цифрой слово с Заглавной буквы
txt = "2Санкт-Петербург, Обводный канал 45/1 строение 25Б Литер М"
regex.Global = False
regex.Pattern = "([\s|^]+)([А-Я]+)([А-Яа-я0-9A-Za-z\s]+)(\d+)(\s|$)?"
If regex.test(txt) Then
Set matches = regex.Execute(txt)
txt3 = matches.Item(0)
End If
End Function
"(^+\d{1,}\s+[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|^)" – надо + убрать совсем? Т.е. "(^\d{1,}\s+[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|^)" Или надо поставить скобочку квадратную либо круглую? "(^[+\d{1,}]\s+[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|^)" либо "(^(+\d{1,})\s+[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|^)" Правильно я понимаю, что убирание плюса ИЛИ заключение в квадратные скобки[+\d{1,}] ИЛИ круглые скобки (+\d{1,}) - дадут один и тот же эффект в данном случае?
Igor у вас пример замечательный и познавательный.
Просто мне хотелось бы ещё разобрать – что у меня не так, из того, что наваялось с моего уровня познаний.
Во второй части убрала + т.е. "(^[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|$)" заработало..
Текущий код:
Код
regex.Pattern = "(^\d{1,}\s+[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|$)"
If regex.Test(txt) Then
Set matches = regex.Execute(txt)
txt = Trim(matches.Item(0))
txt = Replace(txt, " ", "_")
Else
regex.Pattern = "(^[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|$)"
If regex.Test(txt) Then
Set matches = regex.Execute(txt)
txt = Trim(matches.Item(0))
Else
txt = "-"
End If
End If
(?:pattern) Часть выражения, соответствующая слову pattern, но не сохраняющая данной совпадение для использования в дальнейшем. Это удобно использовать для объединения частей шаблона со знаком "или" (|). Например, выражение "industr(?:y|ies)" является более экономичным, чем выражение "industry|industries".
(?=pattern) Часть выражения, выполняющая поиск с положительным просмотром вперед, который соответствует искомой строке в любой точке, где начинается строка, совпадающая с шаблоном pattern. Это сравнение выполняется без сохранения совпадения для возможного использования в дальнейшем. Например, шаблон "Windows (?=95|98|NT|2000)" соответствует слову "Windows" в последовательности "Windows 2000", но не слову "Windows" в последовательности "Windows 3.1". При поиске вперед знаки не обрабатываются, то есть после нахождения совпадения сразу же начинается поиск следующего совпадения, если только оно не включает знаки, входящие в положительный просмотр вперед.
Вы просто знаете для чего это, поэтому, может, вам эти объяснения понятны. Я не понимаю этого описания. (?:ИП|ОАО|ЗАО|АО|ООО|фирма|ЧП|ТД|_) - всегда когда используешь ИЛИ надо ставить ?: (?=[\.,;:\s]|$) - тут из описания выше вообще не понимаю какую функцию выпаолняет.
Можно ли человеческим языком объяснить на данном примере работу ?: и ?= Про нижнее подчеркивание ничего не нашла. Для чего оно перед скобкой в конце.
Я пыталась сделать такое: если первая отдельностоящая группа это цифры (без вкрапления букв) и есть второе слово за пробелом, то соединить их нижним подчеркиванием. Например "ООО 7 континент мира" -> "7_континент", или "ЗАО 29 спуск" -> "29_спуск", но! "7Б Куликово ЧП" - это "7Б", но! "777 фирма" -> "777" Вы могли бы помочь? Как проверить, что первая группа до пробела это только числа?
Я представляла бы себе паттерн для задачки с цифрами таким: "(^+\d{1,}\s+[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|^)" - но в примере ниже он не работает.
Вот этот блок у меня вылетает:
Код
If regex.Test(txt) Then
Set matches = regex.Execute(txt)
txt = matches.Item(0)
txt = Replace(txt, " ", "_")
Else
regex.Pattern = "(^+[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|^)"
If regex.Test(txt) Then
Set matches = regex.Execute(txt)
txt = matches.Item(0)
Else
txt = "-"
End If
End If
Смысл кода выше - если первое слово - все_знаки_цифры - то обрабатывем, как я описала выше. Если это буквы, то берем _только_ первое слово. Если букв-цифр не имеется - т.е. пусто или пробелы, то ставим "-".
([\.,;:\s]|^) - это вроде понятно: определяет какой-либо из символов - точку/запятую/точку с запятой/двоеточие/побел и подобное ИЛИ начало строки (?:ИП|ОАО|ЗАО|АО|ООО|фирма|ЧП|ТД|_) - не могу расшифровать "?:"и "_". Что они означают? (?=[\.,;:\s]|$) - не могу расшифровать в выражении "?=" (знаю только, что ? - это ноль или одно вхождение, а для чего "=" не знаю)
От "[^А-Яа-яёЁ0-9A-Za-z\-]", думаю не стоит отказываться, потому что кроме [\.,;:\s]|^) могут встречаться и кавычки всех сортов и нижние подчеркивания и всё подряд. После Replace "[^А-Яа-яёЁ0-9A-Za-z\-]" на "пробел", как я понимаю, должно идти вот такое: "(\s|^)(?:ИП|ОАО|ЗАО|АО|ООО|фирма|ЧП|ТД|_)(\s|$)" Верно? По прежнему не понимаю для чего "?:" и "_"
Я ещё пыталась сделать такое: если первая отдельностоящая группа это цифры (без вкрапления букв) и есть второе слово за пробелом, то соединить их нижним подчеркиванием. Например "ООО 7 континент мира" -> "7_континент", или "ЗАО 29 спуск" -> "29_спуск", но! "7Б Куликово ЧП" - это "7Б", но! "777 фирма" -> "777" Вы могли бы помочь? Как проверить, что первая группа до пробела это только числа?
Я представляла бы себе паттерн для задачки с цифрами таким: "(^+\d{1,}\s+[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|^)" - но в примере не работает.
Вот этот блок у меня вылетает:
Код
If regex.Test(txt) Then
Set matches = regex.Execute(txt)
txt = matches.Item(0)
txt = Replace(txt, " ", "_")
Else
regex.Pattern = "(^+[А-Яа-яёЁ0-9A-Za-z\-]{1,})(\s|^)"
If regex.Test(txt) Then
Set matches = regex.Execute(txt)
txt = matches.Item(0)
Else
txt = "-"
End If
End If
Смысл кода выше - если первое слово - все_знаки_цифры - то обрабатывем, как я описала выше. Если это буквы, то берем _только_ первое слово. Если букв-цифр не имеется - т.е. пусто или пробелы, то ставим "-".
С файлом-примером исправилась. Этот более человечный. Просто я не думала что первый файл-пример не пригодится, т.к. сократила свой изначальный вопрос и думала, что на него можно ответить без моего примера.
Подскажите, как правильно написать паттерн в регулярных выражениях, чтобы заменить отдельностоящие слова или выражния. Например: Заменить на "пробел" если попадается что-н из этого: ИП, ООО, ЗАО, Торговая Компания. Я думала что это должно выглядеть примерно так: "{\b(ИП|ООО|ЗАО|Торговая Компания)\b}" Поправьте как правильно?
Откуда я должна была это знать, если с этим шрифтом не сталкивалась? Научите? #2 пишет "ноль" по сути. Я что, из космоса должна брать информацию? Возник вопрос - я спрашиваю. А его выпад мне не ясен. Предварительно я гуглила.
Ваш вариант с изменением шрифта работает, спасибо. Что такое e1f6 и e1f7? Из вашего первого сообщения?
Но все-таки - что это за значки в [A2] и [A3]? Это не то же самое, что и ChrW(57846). В них, что удобно, не требуется устанавливать специальный шрифт. Их только копированием можно использовать? Через код никак не вставить?
У меня не получается( результат на картинке (или в файле-примере).
В ячейку вставляется знак вопроса, вместо замка. [A7] = ChrW(57846)
Возможно, вы скажете, что нужен шрифт правильный, но 1) если я копирую значок из ячейки, и вставляю, то никакой шрифт менять не требуется. 2) если я поменяю шрифт, то ChrW(57846) & " замок" - слово замок, наверное, исказится, т.к. буквы превратятся в значки (я так думаю) 3) на всякий полезно было бы знать - какой все-таки шрифт? 4) если все-таки ChrW - то, почему AscW на эти значки выдает -10179
e1f6, e1f7 - в связке с ключевым словом VBA нагуглить ничего не удалось. [A9] = ChrW("e1f6") - выдает ошибку.
В книге-примере в ячейке А1 и А2 в ячейках вставлены символы - замок закрытый и замок открытый. Пытаюсь расшифровать - какой код у символа командами Asc, AscB, AscW - они не определяют. Получается что командами Chr, ChrB, ChrW - я вставить эти замки не могу. Других команд не знаю.