Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Выделить повторяющиеся строки ячейки в каждой ячейке массива ячеек
 
Добрый день. Прошу Вашей помощи. Вот похожая задача, но здесь речь идет об удалении повторяющихся значений. Описание ниже.

В столбце B есть несколько ячеек, каждая из которых содержит несколько строк, разделенных между собой символом новой строки.
Необходимо пробежать по массиву этих ячеек и выделить текст совпадающих в одной ячейке строк красным цветом. И так для каждой ячейки.
Файл-пример ниже. Там показан исходный файл и что стало потом.
Изменено: Piddy - 24.08.2017 16:16:34
Переименовать диапазон ячеек к единому образцу на основе регулярного выражения
 
Добрый вечер.

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

В файле-примере в столбце С приведен диапазон C2:C673, в котором необходимо произвести переименование. Уникальные значения столбца C приведены в листе "уник значения из ст. С". Например,
Код
наименование  муниципального района
Наименование  бюджетов муниципальных районов
Нименование  бюджетов муниципальных районов
Наименование  бюджета муниципального района
Эти ячейки имеют общую маску *менован*+*+мун*+рай*, где * - любое количество символов после слова, + означает пробел
После применения макроса все ячейки этой маски должны получить следующее название:
"Наименование бюджетов муниципальных районов"

Аналогично и с другими вариантами, то есть пользователю открывается диалоговое окно, где он вводит запрос "*менован*+*+мун*+рай*" в виде поиска и "Наименование бюджетов муниципальных районов" в виде ответа. Макрос пробегается по диапазону и переименовывает содержащие такой запрос ячейки к единому формату.

Есть ли какие идеи? На форуме есть вопросы о применении регулярок, но пример переименования диапазона ячеек отдельным запросом я не нашел.

Заранее благодарен.
Изменено: Piddy - 13.07.2017 21:04:11
Переименование листов из нескольких книг на основе данных ячейки, Рекурсивно, основой переименования служит таблица с данными.
 
Добрый вечер.

Необходимо автоматически переименовывать листы книг из нескольких книг на основе ячеек таблицы.Данные по файлам и листам создаются на основе макросов.
Файл-пример приведен во вложении. Есть 4000 excel файлов с разным именованием листов книг. Я создаю структуру файлов книг и листов в таблице на основе макроса, но не знаю как реализовать рекурсивное переименование листов книг на основе критерия в таблице. Критерий следующий.

В столбце G указаны пути к файлам. Столбец B содержит имена листов в соответствии с именем файла. Некоторые файлы содержат более одного листа.
Листы, названия которых должны быть переименованы подсвечены желтым. Например, лист в именем "false_sample_ad" должен быть переименован в "true_sample". НО. Есть листы, которые называются "false_sample 2017", поэтому они должны быть переименованы в "true_sample_2"

Пока получилось набросать только вариант с переименованием листов текущей книги на основе одной ячейки. Как это оформить в виде цикла для пробега по столбцам - не додумал.
Код
Sub RS()
For i = 1 To Sheets.Count
If Worksheets(i).Range("A1").Value <> "" Then
Sheets(i).Name = Worksheets(i).Range("A1").Value
End If
Next
End Sub

Есть ли какие-то идеи? Сам процесс также тяжело проделать вручную, так как файлов очень много.

Заранее благодарен.
Список наименований всех листов из нескольких книг
 
Добрый день.

На сайте есть отличный макрос, который позволяет делать список excel файлов. Вопрос, можно ли приспособить данный макрос. чтобы он выгружал для каждого excel файла наименования всех его листов? Скрытых листов нет.
Насколько я понял нужно в код макроса добавить цикл пробега по содержимому файла excel, а уже потом отдельными строками делать вывод под наименованиями этих файлов.  
Создать строки данных из ячеек, содержащих массив данных
 
Добрый вечер, в ходе работы над сводом возник интересный для опытных пользователей вопрос.

В ячейках O4, O5 и других ячейках столбца O содержится массив данных, который подтягивается функцией MultiVlookup, являющейся расширением ВПР, которое возвращает все совпадения ячеек.
В столбцах B-N, P-S в ячейках содержатся формулы. В столбцах A, T-X - значения. В столбце G включен фильтр. В файле-примере приведен отрывок - исходный файл содержит 8000 строк. Задача:
1. Отфильтровать данные. Для упрощения понимания я уже установил фильтр
2. В отфильтрованных строках для каждой ячейки O, имеющей два и более значения в массиве - сгенерировать новые строки, где в ячейках столбца O будут формироваться по одному значению. Формулы в столбцах B-N, P-S должны быть сохранены, цвета не нужны, так как они генерируются условным форматированием.
3. Те строки, в которых содержались ячейки с массивом должны быть удалены.
4. Если в массиве содержатся два повторяющихся значения оставить одно уникальное, а количество повторяющихся значений отразить в столбце P соответствующих строк.

Конечный результат приведен в листе "Должно быть". Учитывая сложность задачи важно, хотелось бы увидеть реализацию пунктов 1-3, так как п.4 можно формулами потом подцепить. Я решал подобную задачу, но тогда данные подтягивались из массива ячеек, а не массива ячейки. Как это сделать для массива ячейки - ума не приложу. Заранее благодарен.
Изменено: Piddy - 06.07.2017 23:07:08
Создать книгу из отсортированных по имени листов, взятых с нескольких книг
 
Есть несколько книг, каждая из которых содержит 2 и более листов. Листы называются по маске (регистр не важен):
группа*, источники*, ИД*, где * - любая последовательность символов после названия.
Задача - открыть каждую книгу и записать в одну книгу каждый первый попавшийся лист, имя которого соответствует маске: источники* ИЛИ ИД*. То есть из каждой книги должен быть взят один лист, соответствующий маске.
Я скомпилировал небольшой макрос, который можно взять за основу. Он берет из папки все книги и объединяет все их листы в одну книгу. Его можно взять за основу.
Код
Option Explicit

Sub GetSheets()
    Dim Path As String, fileName As String
    Dim Sht As Worksheet

    Path = "\Users\Test\"
    fileName = Dir(Path & "*.xls")
    Do While fileName <> ""
        Workbooks.Open fileName:=Path & fileName, ReadOnly:=True
        With ActiveWorkbook
            .Worksheets(1).Copy After:=ThisWorkbook.Sheets(1)
            ThisWorkbook.Sheets(2).name = .name
        End With
        ActiveWorkbook.Close
        fileName = Dir()
    Loop
End Sub
На выходе должен получиться файл в котором будет 500-1000 листов.Исходные названия листов должны быть сохранены.
В дальнейшем я буду эти листы обрабатывать. Но сложность состоит именно выдернуть эти листы, так как их нумерация отличается.
Изменено: Piddy - 30.06.2017 22:22:11
Автоматически создавать строки с данными из другого листа на основе критерия
 
Есть два листа в которых содержатся взаимосвязанные таблицы. Формулы для решения задачи я не нашел, так как необходима генерация строк.

Есть два листа: Лист1 надо заполнить (создать строки), Лист2 источник данных этих строк.
В лист1 есть столбец "Код родителя", там  строки вида 123, 124, 125 и т.д. Для этих строк в столбце B есть какое-то наименование. Задача - детализировать эти строки, добавив новые строки значениями из Лист2
Лист2  содержит 3 столбца. Столбец С "Код родителя", по которому надо пробегаться, чтобы брать данные из столбцов A, B из Лист2 и подставлять в столбцы A, B в Лист1 новыми строками.
Красным отмечено, что служит критерием копирования строк. Желтым копируемые строки.

Заранее благодарен.  
Изменено: Piddy - 23.06.2017 09:38:22
Страницы: 1
Loading...