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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 78 След.
Как быстро из одного файла с 1000 листами пересобрать другой файл на 300 листов в определенном порядке
 
Цитата
artemkau88 написал:
Но если знать как отбираются номера, то можно доработать то, что есть
Об этом никто и не спорит, просто предлагаем оптимизировать работу. К примеру поиск нужной таблицы из 1000 таблиц не самое легкое занятие, или сбор данных с нужных таблиц будет ещё веселей
Как быстро из одного файла с 1000 листами пересобрать другой файл на 300 листов в определенном порядке
 
Цитата
RAN написал:
1000 листов - работенка для  Иван Поддубный
Безумству храбрых, поём мы песню!
Цитата
RAN написал:
Тем паче, что такой макрос будет не сложнее того, что вы пытаетесь сотворить сейчас
При заполнении формы можно вообще обойтись без макросов, копирование листа с формой в новую книгу записать макрорекордером. Единственное, нужно будет писать макрос для сборки всех данных назад из 1000 форм в одну таблицу  :D
Изменено: Msi2102 - 30.06.2022 09:53:36
Получение значений столбцов с нескольких листов
 
Если у Вас офис 2019 и выше то можете собрать уникальные такой формулой:
Код
=УНИК(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;'7180301:6180310'!1:1);";";"</s><s>")&"</s></t>";"//s"))

Но я бы на Вашем месте смотрел в сторону Power Query. Например можно почитать ТУТ, ещё может пригодится ЭТО и ЭТО и выглядит примерно как в файле
Код
let
    f=(x)=>Excel.CurrentWorkbook(){[Name=x]}[Content],
    Запрос = Table.Combine({f("Таблица1"), f("Таблица2"), f("Таблица3"), f("Таблица4"), f("Таблица5"), f("Таблица6"), f("Таблица7"), f("Таблица8")})
in
    Запрос

PS И ещё, в ПРАВИЛАХ форума (п.2.6), сказано: 1 вопрос 1 тема.
Изменено: Msi2102 - 30.06.2022 09:46:47
Редизайн таблицы с данными, Перестроить таблицу с данными под условия
 
gefy 444, Вам какое нужно решение: макрос, формулы, PQ?
Можете поступить просто:
в ячейку D2 и потянуть вниз;
Код
=ЕСЛИ(ЕТЕКСТ(A2);A2;D1)

в ячейку E2 и протянуть вниз;
Код
=ЕСЛИ(ЕТЕКСТ(A2);B2;E1)

Далее копируете эти два столбца и вставляете только значения. После чего устанавливаете фильтр и по отфильтровываете по столбцу прибыль пустые ячейки и удаляете их.
Отжимаете фильтр и ВУАЛЯ
PS это только если у Вас формат оригинала совпадает с примером
Изменено: Msi2102 - 29.06.2022 15:23:12
Нумерация строк от большего к меньшему(5..4..3..2..)
 
Цитата
Михаил Л написал:
А надо так: 5..4..3..2..1
А в чем проблема, ставим 5, в следующей ячейке 4, выделяем обе ячейки и тянем вниз, или =А1-1
При протягивании столбца из цифр, в строке формул появляется много знаков после запятой, Эксель произвольно добавляет знаки после запятой в строке формул. Убрать знаки после запятой, которые отображаются в строке формул
 
Цитата
Jack Famous написал:
на SQL - такой проблемы и близко нет.
На VBA тоже, а Вот Excel сплоховал  :(
Код
Sub Макрос2()
    Debug.Print 8192.71028
    Debug.Print Round(8192.71028, 15)
    Debug.Print WorksheetFunction.Round(8192.71028, 15)
End Sub
При протягивании столбца из цифр, в строке формул появляется много знаков после запятой, Эксель произвольно добавляет знаки после запятой в строке формул. Убрать знаки после запятой, которые отображаются в строке формул
 
Эта тема периодически всплывает на форумах, недавно ТУТ была, я там тоже обжёгся на ОКРУГЛ  :D
При протягивании столбца из цифр, в строке формул появляется много знаков после запятой, Эксель произвольно добавляет знаки после запятой в строке формул. Убрать знаки после запятой, которые отображаются в строке формул
 
Цитата
Jack Famous написал:
=ОКРУГЛ(ЧИСЛО;2)
Jack Famous Попробуйте такую формулу:
Код
=ОКРУГЛ(8192,71028;5)
И увеличьте количество знаков после запятой до 11. Вводите именно "8192,71028"
Макрос объединения ячеек по условиям
 
evgeniygeo, Вот вариант по максимальному количеству строк в диапазоне.
Для наглядности вставил MsgBox который показывает собранные диапазоны, после того как Вам станет ясно, что и как удалите чтобы не мешал.
Далее их разбивает анализируем и с наибольшим количеством строк объединяем, остальные красим в красный. Если будут два диапазона с одинаковым количеством, по объединит оба. Для понимания как записаны диапазоны я их разграничил. Попробуйте на двух вариантах, чтобы понять разницу.
Если нужно другой принцип выбора диапазона, переделаете как нужно Вам, то пример анализа Вам показал в этом коде,
Код
Sub Макрос1()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.DisplayAlerts = False
Dim r As Long, c As Long, arr As Variant, n As Variant, mx As Variant
arr = Range("A4:D11")
Set Dict = CreateObject("Scripting.Dictionary")
    For c = 1 To UBound(arr, 2)
        For r = 1 To UBound(arr)
            If Not Dict.Exists(arr(r, c)) Then
                Dict.Add arr(r, c), Cells(r + 3, c).Address
            Else
                Dict.Item(arr(r, c)) = Union(Range(Dict.Item(arr(r, c))), Cells(r + 3, c)).Address
            End If
        Next r
    Next c
For Each n In Dict
'Для наглядности вставил MsgBox который показывает собранные диапазоны.
'Далее их разбивает анализируем и с наибольшим количеством строк объединяем, остальные красим в красный
    MsgBox Dict.Item(n)
    If Not n = "" Then
        mx = 0
        arr1 = Split(Dict.Item(n), ",")
        For Each m In arr1
            If mx < Range(m).Rows.Count Then mx = Range(m).Rows.Count
        Next m
        For Each m In arr1
            If Range(m).Rows.Count = mx Then Range(m).Merge Else Range(m).Interior.Color = vbRed
        Next m
    End If
Next n
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Макрос объединения ячеек по условиям
 
Цитата
evgeniygeo написал:
просто не может быть
Это почему? По рисунку в сообщении №12, Первое и второе совещание начинаются одновременно, но второе совещание очень длинное и в конце пересекается с третьем совещанием.
Мое мнение я высказал в сообщении №2
Цитата
Msi2102 написал:
Посмотрите  ТУТ  и  ТУТ
И выглядело бы это примерно так, а уж этот график можно переформатировать в любой другой
Макрос объединения ячеек по условиям
 
Цитата
Jack Famous написал:
Закономерности не вижу
Вот и я тоже, хотел просто оставить диапазоны с наибольшем количеством строк, но тоже не всё гладко.
Самое простое это не ставить идентификаторы в те ячейки которые не нужно объединять  :D
Или вот вариант, какой из них правильный?
Изменено: Msi2102 - 29.06.2022 12:00:34
Трансформация выгрузки из 1С, Трансформация выгрузки из 1С
 
Цитата
Jack Famous написал:
2 разных уровня с одинаковой заливкой
Да согласен
Макрос объединения ячеек по условиям
 
А как быть в этом случае?
Макрос объединения ячеек по условиям
 
А какой критерий выделения? Например, см. рисунок, красный цвет должен объединяться или нет?
Изменено: Msi2102 - 29.06.2022 11:29:59
Трансформация выгрузки из 1С, Трансформация выгрузки из 1С
 
Цитата
Jack Famous написал:
Единственное, что вам поможет, это макрос на основе отступов — ( Range.IndentLevel )
, не правда, ещё может помочь макрос на основании группировки или заливки ячеек
Юлия Юлия, Если у Вас будет сохранена группировка строк то можете сделать так:
Выделяйте Ваши данные (только данные с группировкой, см.рисунок, не нужно выделять весь столбец) и жмите на кнопку
Код
Sub Макрос1()
Dim arr As Variant, arr1 As Variant, n As Long, m As Integer
arr1 = Selection.Columns("A:A")
ReDim arr(1 To UBound(arr1), 1 To 1)
Set Dict = CreateObject("System.Collections.ArrayList")
For Each r In Selection.Rows
    n = n + 1
    If Not Dict.contains(r.OutlineLevel) Then
        Dict.Add r.OutlineLevel
        If Dict.Count > 1 Then ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + 1)
    End If
    arr(n, Dict.LastIndexOf(r.OutlineLevel) + 1) = arr1(n, 1)
    If Dict.LastIndexOf(r.OutlineLevel) + 1 > 1 And n > 1 Then
        For m = Dict.LastIndexOf(r.OutlineLevel) To 1 Step -1
            arr(n, m) = arr(n - 1, m)
        Next
    End If
Next
Columns(1).Resize(, Dict.Count).Insert Shift:=xlToRight
Selection(1).Resize(UBound(arr), UBound(arr, 2)).NumberFormat = "@"
Selection(1).Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub
Изменено: Msi2102 - 29.06.2022 11:06:50
Макрос объединения ячеек по условиям
 
Цитата
evgeniygeo написал:
как удалить не нужные части
, а что там ненужное?
Power Query. Разбить список по группам, ориентируясь на определенное значение в этом списке
 
Вот кнопочный вариант
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Список"]}[Content],
    #"Добавлен индекс" = Table.AddIndexColumn(Источник, "Индекс", 2, 1, Int64.Type),
    #"Условный столбец добавлен" = Table.AddColumn(#"Добавлен индекс", "Строка", each if [Список] = "Продукт" then [Индекс] else null),
    #"Заполнение вниз" = Table.FillDown(#"Условный столбец добавлен",{"Строка"}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Заполнение вниз",{"Индекс"})
in
    #"Удаленные столбцы"
Суммировать значения в одинаковых строках и столбцац
 
Если 2019 по подписке и выше то так:
Макрос объединения ячеек по условиям
 
Попробуйте так:
Код
Sub Макрос1()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.DisplayAlerts = False
Dim r As Long, c As Long, arr As Variant, n As Variant
arr = Range("A4:D11")
Set Dict = CreateObject("Scripting.Dictionary")
    For c = 1 To UBound(arr, 2)
        For r = 1 To UBound(arr)
            If Not Dict.Exists(arr(r, c)) Then
                Dict.Add arr(r, c), Cells(r + 3, c).Address
            Else
                Dict.Item(arr(r, c)) = Union(Range(Dict.Item(arr(r, c))), Cells(r + 3, c)).Address
            End If
        Next r
    Next c
For Each n In Dict
    If Not n = "" Then Range(Dict.Item(n)).Merge
Next n
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Изменено: Msi2102 - 28.06.2022 15:21:05
Макрос объединения ячеек по условиям
 
Может Вам изменить подход. Посмотрите ТУТ и ТУТ
работа с Функцией =ПросмотрХ
 
Попробуйте так
Код
=ПРОСМОТРX(A2;ЕСЛИ($N$2:$N$32>1;$M$2:$M$32;"");$N$2:$N$32;"";0;1)

Но я бы на Вашем месте сделал так:
Код
=ПРОСМОТРX(A2;ЕСЛИ($N$2:$N$32>1;$M$2:$M$32;"");$N$2:$N$32;"";0;-1)

Отсортировал по наименованию и по дате (для наглядности ). в Вашем примере берется самое раннее значение, а я так понял нужно последнее.
работа с Функцией =ПросмотрХ
 
Цитата
Sherzod Zukurov написал:
За ответ заранее спасибо файл пример не могу загрузить там данные компании.
Нам не нужен Ваш файл, читайте правила:
 
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
  2.4. Не прикладывайте файлы-примеры с персональными данными, конфиденциальной информацией, коммерческой или государственной тайной! Яндекс и Google не спят - проиндексируют ваши данные и привет - они попадут в открытый доступ. И даже удаление темы потом не поможет.
Придумайте пример, с вымышленными данными
Умножение дробей, Умножение дробей
 
Можно с помощью макрокоманд Excel 4
Или такой формулой
Код
=ЛЕВСИМВ(СЖПРОБЕЛЫ(F2);ПОИСК("/";СЖПРОБЕЛЫ(F2))-1)/ПСТР(СЖПРОБЕЛЫ(F2);ПОИСК("/";СЖПРОБЕЛЫ(F2))+1;999)*C2

или такой
Код
=ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(F2);"/";"</i><i>")&"</i></j>";"//i[1]")/ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(F2);"/";"</i><i>")&"</i></j>";"//i[2]")*C2
Изменено: Msi2102 - 27.06.2022 10:27:03
Макрос подтягивание значений по дате и табелю, Макрос для подтягивание значений
 
Ученик Учителя, А у Вас файл "Берём данные отсюда" будет открыт или нет?
Как быстро из одного файла с 1000 листами пересобрать другой файл на 300 листов в определенном порядке
 
Иван Поддубный, я вообще не понимаю, для чего хранить информацию в формах. По моему, вы можете хранить информацию в простой таблице, а по необходимости заполнять шаблон и его уже распечатывать, отправлять кому хотите и т.п.
Извлечь из текста фрамент, размещенный в скобках
 
Тут была подобная тема
Частичная замена значений в PQ
 
Цитата
surkenny написал:
зло эти регулярки. Они оооочень медленные.
я не спорю, просто не понятно, какие там исходные данные, судя по всему пример ни о чём.
Цитата
Евгений Валерьевич написал:
Если нет ИНН/КПП, то удаляет ООО.
Да и вопрос в сообщении №5 звучал так:
Цитата
Евгений Валерьевич написал:
Я надеялся, что существуют символы, похожие на "*/*" в поле поиска.
Частичная замена значений в PQ
 
Цитата
Евгений Валерьевич написал:
Если нет ИНН/КПП, то удаляет ООО
вот для этого и нужен нормальный пример. Можете ещё почитать к примеру ТУТ
Изменено: Msi2102 - 24.06.2022 21:03:06
Поднять значения в столбцах вверх для вертикального заполнения пустых ячеек
 
Цитата
Olga H. написал:
спасибо, с помощью вашего приёма
Конечно, пожалуйста, но это не мой приём, это приём Excel.  :D
Цитата
Olga H. написал:
заняло для моего компьютера примерно 5 минут.
Я не знаю, что у Вас за компьютер, что за файл, какие там данные и как часто выполняется такая операция, если нужно быстрее, то можно макросом. Если это единичная операция, то можно и подождать  ;)
Частичная замена значений в PQ
 
Цитата
Евгений Валерьевич написал:
А зачем нужен файл?
Из файла видно, где у Вас находятся данные, в начале, в конце, в середине, какие столбцы, сколько их и т.п., это всё может повлиять на решение. Если Вы внимательно прочитали п.2.3: "в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе", то должны были понять как и для чего это нужно. То есть помогающий должен понимать, что именно вы хотите видеть в результате. Например согласно Вашему примеру можно сделать так:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Извлеченный текст перед разделителем" = Table.TransformColumns(Источник, {{"Получатель счета", each Text.BeforeDelimiter(_, " ", {0, RelativePosition.FromEnd}), type text}})
in
    #"Извлеченный текст перед разделителем"
Изменено: Msi2102 - 24.06.2022 19:39:29
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 78 След.
Наверх