Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
Выгрузка данных из Excel в несколько txt-файлов.
 
И все-таки, подскажите, пожалуйста, что нужно в макросе поправить...
Чтобы данные из столбца 8 (H) записывались в разные файлы (столбец 14, N). Данные в каждом файле не должны повторяться (например, в первый файл 461.21.003.txt должно попадать только одно значение DF)
Изменено: jeka-irbis - 9 Дек 2019 21:20:50
Выгрузка данных из Excel в несколько txt-файлов.
 
Юрий М,прикладываю пример.

Kuzmich, да, еще раз спасибо за решение!
Проверка и формирование уникальных значений ячеек столбца таблицы
 
Kuzmich,
Цитата
Kuzmich написал:
В ячейку В2 формулу =СЧЁТЕСЛИ($A$2:A2;A2) и тянем вниз
Я туплю - как формулу скопировать? При нажатии Enter выдается предупреждение, что это не формула и подсвечивается $A$2.
--------------------

Не переключился с R1C1 на A1. Все супер! Спасибо!!!
Изменено: jeka-irbis - 8 Дек 2019 21:35:44
Выгрузка данных из Excel в несколько txt-файлов.
 
ocet p, спасибо за помощь! Вопрос в общем решил сам, пока не было Интернета и возможности прочитать ваш ответ)) Оказалось, достаточно подправить строку 15
Цитата
ss = ThisWorkbook.Path & Application.PathSeparator & Cells(3, 2) & "_" & Format(Now, "dd-mm-yy-hh-mm-ss") & "_SERVICE" & ".txt"
на
Цитата
ss = ThisWorkbook.Path & Application.PathSeparator & Cells(j, 14) & "_" & Format(Now, "dd-mm-yy-hh-mm-ss") & "_SERVICE" & ".txt"
И затем строки 15-18 перенести в цикл, ну и для для красоты изменить строку 19).
Цитата
ocet p написал:
пс:
Я не спец в макросах, вероятно, либо в исходнике было другое, либо я что добавлял в меру своего дилетанства. Макрос - смесь бульдога с носорогом, но работает и за его красотой не следил).
Без
Код
Set wsUnload = ActiveSheet
не работает, выдает ошибку 91.
По другим вопросам - "так было в исходнике".

Итоговый макрос:

Код
Sub WriteSERVICE()
    Dim rowsDict As Object, wsUnload As Worksheet
    Dim s As String, ss As String, j As Long, n As Long
      
    Set wsUnload = ActiveSheet
    Set rowsDict = CreateObject("Scripting.Dictionary")
    If wsUnload.Cells(wsUnload.Rows.Count, 14).Value <> "" Then n = wsUnload.Rows.Count Else n = wsUnload.Cells(wsUnload.Rows.Count, 14).End(xlUp).Row
    For j = 3 To n
        If Not rowsDict.Exists(wsUnload.Cells(j, 4).Value) Then
            rowsDict.Add wsUnload.Cells(j, 4).Value, wsUnload.Cells(j, 4).Value
            s = s & "[InstanceData]" & vbCrLf & "SERVICE=" & wsUnload.Cells(j, 4).Value & vbCrLf & vbCrLf
        End If
             
    ss = ThisWorkbook.Path & Application.PathSeparator & Cells(j, 14) & "_" & Format(Now, "dd-mm-yy-hh-mm-ss") & "_SERVICE" & ".txt"
    Open ss For Output As #1
    Print #1, s
    Close #1
    Next j

    MsgBox "Файл(ы) сформирован(ы)", 64, "Excel"
End Sub
Но обнаружил косяк - как-то нужно сбрасывать переменную "s"...
------------------------------------------------------------------------------------
Юрий М, прошу прощения, не указал, что столбец находится на этом же листе.
Изменено: jeka-irbis - 8 Дек 2019 21:14:53
Выгрузка данных из Excel в несколько txt-файлов.
 
Доброй ночи!
Есть рабочий макрос, выгружающий данные в txt-файл:
Код
Sub WriteSERVICE(control As IRibbonControl)
    Dim rowsDict As Object, wsUnload As Worksheet
    Dim s As String, ss As String, j As Long, n As Long
     
    Set wsUnload = ActiveSheet
    Set rowsDict = CreateObject("Scripting.Dictionary")
    If wsUnload.Cells(wsUnload.Rows.Count, 7).Value <> "" Then n = wsUnload.Rows.Count Else n = wsUnload.Cells(wsUnload.Rows.Count, 7).End(xlUp).Row
    For j = 5 To n
        If Not rowsDict.Exists(wsUnload.Cells(j, 4).Value) Then
            rowsDict.Add wsUnload.Cells(j, 4).Value, wsUnload.Cells(j, 4).Value
            s = s & "[InstanceData]" & vbCrLf & "SERVICE=" & wsUnload.Cells(j, 4).Value & vbCrLf & vbCrLf
        End If
    Next j
    
    ss = ThisWorkbook.Path & Application.PathSeparator & Cells(3, 2) & "_" & Format(Now, "dd-mm-yy-hh-mm-ss") & "_SERVICE" & ".txt"
    Open ss For Output As #1
    Print #1, s
    Close #1
    MsgBox "Файл сформирован: " & ss, 64, "Excel"
End Sub
Подскажите, как его модифицировать, чтобы появилась возможность разделения выгрузки данных, по отдельным файлам, прописанных с дополнительном столбце пути файла и его имени?
Как автоматом дублировать гиперссылки при вводе новых данных
 
bkost, изучите все-таки функцию ВПР.
Посмотрите https://www.planetaexcel.ru/techniques/2/106/ Лучшей подачи материала я не видел.

Можно еще справку Excel по этой функции посмотреть, но справка не всегда понятна.

По гиперссылкам можно почитать https://www.planetaexcel.ru/techniques/2/33/
Проверка и формирование уникальных значений ячеек столбца таблицы
 
Kuzmich,
Цитата
jeka-irbis написал: если в рабочем файле в столбце H (или любом другом) будут данные - они затрутся.
Пример - это просто сильно упрощенная таблица из двух столбцов. Сейчас рабочий файл имеет 15 столбцов, и столбец H заполнен.
В общем, идею я понял, как поправить макрос, чтобы это обойти.
Спасибо за помощь!!! Буду пока этим пользоваться)

P.S.: если все-таки у кого есть еще предложения по поводу
Цитата
jeka-irbis написал:
Можно ли выполнить требование по уникальности в пределах двух столбцов ("исходный код" - "новый код"), без макросов и вспомогательных столбцов для преобразований и фильтрации (формулами)?
буду крайне признателен.
Проверка и формирование уникальных значений ячеек столбца таблицы
 
Kuzmich, круто, спасибо! А для чего делать копирование форматирования в столбец H?

Я цвет добавлял только для того, чтобы вам было удобнее понять, какие ячейки одинаковые. В реальным сводках его нет.
Будет неприятно, если в рабочем файле в столбце H (или любом другом) будут данные - они затрутся.
Можно обойтись манипуляциями только в двух столбцах?
Как автоматом дублировать гиперссылки при вводе новых данных
 
Не понятно, как формируется ссылка и на что она ссылается. Если в формировании ссылок есть закономерность, то можно попробовать следующий способ.

Я бы сделал вторую вкладку, но который была бы "умная таблица" с 2 столбцами - "уникальными артикулами" и "формированием ссылок" на файлы с данными по нему (тут можно использовать СЦЕПИТЬ и т.д.).
А на первом листе добавил бы столбец для ссылок. Тогда на первом листе в столбце ссылок можно использовать ВПР и ГИПЕРССЫЛКА для "подтягивания" ссылки со второй вкладки.
В случае добавления нового артикула, в ячейке со ссылкой будет ошибка - в этом случае надо будет добавить артикул на вторую вкладку и сформировать ссылку на него.

По другому - не знаю.
Проверка и формирование уникальных значений ячеек столбца таблицы
 
Kuzmich, где-то в макросе ошибка - копируется только форматирование:
Как автоматом дублировать гиперссылки при вводе новых данных
 
bkost, без примера не понятно, что вы хотите получить. Возможно, стоит использовать "форматировать как таблицу", а может, этого недостаточно.
Ссылки статичные или должны генерироваться автоматически?
Проверка и формирование уникальных значений ячеек столбца таблицы
 
Добрый день.
Прошу совета или помощи в следующей ситуации.

Имеется сводный перечень "кодов элементов", полученных сборкой разных документов от разных исполнителей. В этом перечне необходимо проверить уникальность использованных "кодов", и, если попадаются неуникальные, сформировать новые значения, которые потом вернутся исполнителю для корректировки (как таблица соответствия старых и новых значений). Код формируется по определенным правилам и использовать "рандомные" функции или GUID-подобные вещи не представляется возможным.

1) Имеется код элемента. Если он до этого не встречался, то остается старое значение.
2) Если в ячейках выше код встречался, то текущему элементу необходимо присвоить окончание, допустим, "-01".
3) Если коды ниже повторяются неоднократно, то каждому последующему присваивать "-02", "-03" и т.д.

Можно ли выполнить требование по уникальности в пределах двух столбцов ("исходный код" - "новый код"), без макросов и вспомогательных столбцов для преобразований и фильтрации? В макросах не разбираюсь, а со вспомогательными столбцами не очень удобно.

Пример того, что должно получаться - во вложении. Для удобства "подсвечены" исходные дубликаты.
Сводные таблицы. Посчитать, сколько файлов за какими исполнителями закреплено
 
Юрий М, "Знать задачу" и "четко сформулировать вопрос" - это немного разные вещи. Со вторым у меня проблема.
Задача - посчитать, сколько файлов за какими исполнителями закреплено. Через "сводную таблицу" почему-то выводится не тот результат (не количество файлов, а количество страниц).
Как еще это объяснить - я не знаю.
Сводные таблицы. Посчитать, сколько файлов за какими исполнителями закреплено
 
vikttur, я затрудняюсь информативно (для специалистов) сформулировать. Тот результат, который нужен - узнать, какой "исполнитель" с каким "файлом" работает. В поле сводной таблицы "Значения" я затаскиваю "Количество по полю Файл" - в итоге получаю
Сводные таблицы. Посчитать, сколько файлов за какими исполнителями закреплено
 
Доброй ночи!
Есть исходная таблица, где прописываются "исполнители", "Файл", с которыми они работают, и "количество страниц" для файлов.

Создаю по ней сводную таблицу - в столбцах "Исполнитель", в строках "Файл". Почему-то при выборе значения "Количество по полю Файл" выводится количество страниц. Т.е. в рабочих ячейках должны появляться только "1" (если файлу назначен исполнитель), а в "Общем итоге" должно считаться, сколько файлов у какого исполнителя - в чем мой косяк?
Или играет роль порядок столбцов в исходной таблице? Порядок - "Файл", "количество страниц", "Исполнитель"
Аналог функции "ОБЪЕДИНИТЬ" для старых версий
 
БМВ, спасибо за помощь!

Буду все-таки разбираться с вашим примером выше - не нравятся мне длинные конструкции с вложениями ЕСЛИ, И...

Либо просто буду все данные делить а две части - когда обе ячейки пусты и когда хотя бы в одной из них есть значение. Тогда будет просто две простые формулы)
Т.к. наименование элемента состоит из 5-6 элементов и две "проблемные" ячейки находятся в середине - общая формула получается длинной и сразу неочевидной.
Аналог функции "ОБЪЕДИНИТЬ" для старых версий
 
БМВ, задача - автоматическое формирование наименования элемента по его характеристикам (каждая из которых занесена в ячейку).
Ячеек, которых могут быть не заполнены, всего две, поэтому возможно всего четыре варианта (заполнено-заполнено, пусто-заполнено, заполнено-пусто, пусто-пусто).
Пока решений 3:
- фильтрую по всем 4 вариантам заполнения строки и для каждой группы делаю свою свою простую формулу для формирования наименования; получается понятно, но долго, если что-то потом поменялось;
- использую ЕСЛИ; получается "длинная формула", непонятная на первый взгляд;
- использую ОБЪЕДИНИТЬ для вариантов, когда хотя бы одна из ячеек заполнена и отдельно - формулу, когда нужные ячейки пусты.

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

kristina S, нет, сцепляемые ячейки могут быть и не заполнены и тогда появляются лишние пробелы.

Кстати, в PLEX таки есть аналогичная ОБЪЕДИНИТЬ функция - "TextJoin"  :oops: Буду теперь знать...
Изменено: jeka-irbis - 27 Ноя 2019 10:53:15
Проблема функций "Операции с текстом"
 
Доброе утро!
Столкнулся со следующей проблемой.
Есть файл, созданный в Excel 2019 и в котором применены новые функции, в т.ч. и ОБЪЕДИНИТЬ.
На другой машине установлен Excel 2013, в котором функции 2019-ой версии становятся "неопознанными" : "_xlfn.TEXTJOIN".
Есть необходимость работы с данным файлом в обеих версиях Excel (условно говоря - дома и на работе). На обеих версиях Excel используется PLEX 2019.1.
Ячейки с "новыми" формулами в Excel 2013 не трогаются.

При попытке использования в Excel 2013 функций PLEX 2019.1 из группы "Операции с текстом" (в частности, удаление лишних пробелов) появляется следующее окно:

При этом ячейки, к которым должны применяться функции "Операции с текстом", не содержат формул.
Если нажать "Отмена", то действие выбранной функции может произойти (например, добавление символов в начало/конец строки) или не произойти (не происходит удаление лишних пробелов).

Возможно, подобное окно появляется при попытке выполнения и в других операциях PLEX, не проверял.
В чем все-таки проблема и лечится ли это?
Изменено: jeka-irbis - 27 Ноя 2019 08:39:27
Аналог функции "ОБЪЕДИНИТЬ" для старых версий
 
Добрый день!
Вопрос - есть ли аналог функции ОБЪЕДИНИТЬ? На работе установлен Excel 2013, в нем этой функции еще не было.
И если нет - как можно создать пользовательскую функцию аналогичного действия?

/СЦЕПИТЬ - не подойдет, так как не все сцепляемые ячейки заполнены/
Генерация GUID в Excel
 
Андрей Лящук,посмотрел - там тоже пусто.
Генерация GUID в Excel
 
sokol92,и как это работает?
запустил макрос - тишина...
Генерация GUID в Excel
 
Добрый день!
Столкнулся с необходимостью генерации GUID. Пока генерю так:
Код
=СЦЕПИТЬ(ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;4294967295);8);"-";ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;65535);4);"-";ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;65535);4);"-";ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;65535);4);"-";ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;4294967295);8);ДЕС.В.ШЕСТН(СЛУЧМЕЖДУ(0;65535);4))
А есть ли еще способы генерации GUID в Excel? Интересны другие варианты.
Округление результата по условию
 
БМВ, первый вариант красивый) Только вместо "1" должна быть "2".
Спасибо за оба способа!
Изменено: jeka-irbis - 4 Ноя 2019 22:39:12
Округление результата по условию
 
БМВ,спасибо, поправил)
Округление результата по условию
 
Добрый вечер!
Суть вопроса - возможно ли разное округление результата вычислений, в зависимости от значения целой части результата БЕЗ оператора ЕСЛИ и промежуточных ячеек?
Например, если оно менее 1, то до 2 знаков после запятой; если больше 1 и меньше 10 - до 1 знака, если больше 10 и меньше 100 - до целых значений, если больше 100 - до десятков).
Изменено: jeka-irbis - 4 Ноя 2019 22:00:27
Сцепить в текстовую строку данные, пропуская пустые ячейки
 
Aleksey1107, спасибо, подошло! То, что нужно, наконец-то многоэтажных ЕСЛИ не будет)
Сцепить в текстовую строку данные, пропуская пустые ячейки
 
Добрый день!
Суть проблемы в следующем.
Необходимо сформировать строку по данным ячеек, с использованием команды СЦЕПИТЬ (или "&").
Но в разных строках не все ячейки могут иметь значения, соответственно, необходимо предусматривать варианты сцепки для исключения лишних пробелов (и исключения знаков, например, запятых, если ячейки сцепляются через запятые, а одна из ячеек оказывается пустой).

Использование функции ЕСЛИ для каждого варианта заполненных и пустых ячеек не совсем удобно, т.к. формула становится длинной и нечитаемой.
Есть ли какой-то способ уйти от этого? Что-то вроде ВПР, или еще что...
Способ со вспомогательными столбцами тоже рассматривается.
Изменение размера диапазона в PLEX 2019.1
 
Добрый день!
Некорректно работает функция "Изменить размеры".
Необходимо строку преобразовать в столбец. Все настраиваю:



В результате, начиная с ячейки А2, дублируется строка А1:BJ1.Я что-то делаю не так или есть какой-то косяк в макросе?(
Изменено: jeka-irbis - 3 Ноя 2019 11:48:08
Левый ВПР, Как пользоваться данной функцией
 
Rulsan,https://www.planetaexcel.ru/techniques/2/2012/ ?
Обновление оглавления, функционал
 
Jack Famous, затем, что в каждую строку оглавления после его создания вручную добавляется дополнительная информация. И при актуализации обновления она теряется, естественно...
В принципе, не проблема переименовать вкладку, актуализировать оглавление и перенести данные с переименованной вкладки. Наверное это проще, чем придумывать принципы обновления оглавления без зачистки других ячеек...
Страницы: 1 2 3 След.
Наверх