Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Группировка обозначений - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Группировка обозначений
4step Дата: Пятница, 09.06.2023, 03:48 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Репутация: 0 ±
Замечаний: 40% ±

Добрый день! Имеется некий список обозначений в ячейки соединенных между собой ";" или другим значениями. Обозначения могут быть дробными, делятся тоже значениями. Значения в виде разделителей и дробей могут быть переменными и определяются пользователем. Нужно сгруппировать обозначения по порядку как указано в примере. Возможно ли это сделать?
К сообщению приложен файл: gruppirovka.xlsx (9.5 Kb)


Сообщение отредактировал 4step - Пятница, 09.06.2023, 09:22
 
Ответить
СообщениеДобрый день! Имеется некий список обозначений в ячейки соединенных между собой ";" или другим значениями. Обозначения могут быть дробными, делятся тоже значениями. Значения в виде разделителей и дробей могут быть переменными и определяются пользователем. Нужно сгруппировать обозначения по порядку как указано в примере. Возможно ли это сделать?

Автор - 4step
Дата добавления - 09.06.2023 в 03:48
NikitaDvorets Дата: Пятница, 09.06.2023, 11:56 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 611
Репутация: 142 ±
Замечаний: 0% ±

Excel 2019
4step, добрый день.
Цитата
Возможно ли это сделать?

Недостаточно информации для анализа.
Пошаговый алгоритм преобразования "ввода" в "вывод" на 2-3 примерах позволил бы прояснить вопрос о возможностях...
 
Ответить
Сообщение4step, добрый день.
Цитата
Возможно ли это сделать?

Недостаточно информации для анализа.
Пошаговый алгоритм преобразования "ввода" в "вывод" на 2-3 примерах позволил бы прояснить вопрос о возможностях...

Автор - NikitaDvorets
Дата добавления - 09.06.2023 в 11:56
прохожий2019 Дата: Пятница, 09.06.2023, 12:26 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 1298
Репутация: 327 ±
Замечаний: 0% ±

365 Beta Channel
черновичёк на pq
для конкретной реализации нужен более развернутый пример
К сообщению приложен файл: 8671371.xlsx (18.0 Kb)
 
Ответить
Сообщениечерновичёк на pq
для конкретной реализации нужен более развернутый пример

Автор - прохожий2019
Дата добавления - 09.06.2023 в 12:26
msi2102 Дата: Пятница, 09.06.2023, 12:42 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Попробуйте так
[vba]
Код
Public Sub Перебрать()
    Dim arr, arr1, arr2, arr3, x, y, lr As Long, i As Long, n As Integer
    Set sd = CreateObject("Scripting.Dictionary")
    lr = Cells(Rows.Count, 9).End(xlUp).Row
    arr = Range("I2:I" & lr).Value
    For i = 1 To UBound(arr)
        arr1 = Split(arr(i, 1), ";")
        For n = 0 To UBound(arr1)
            If arr1(n) <> "" Then
                arr2 = Split(arr1(n), "~")
                arr3 = Split(arr2(UBound(arr2)), ".")
                If UBound(arr2) = 0 Then arr2(0) = arr3(0): arr3(0) = "null"
                If Not sd.Exists(Trim(arr2(0))) Then Set sd(Trim(arr2(0))) = CreateObject("Scripting.Dictionary")
                If Not sd(Trim(arr2(0))).Exists(arr3(0)) Then Set sd(Trim(arr2(0)))(arr3(0)) = CreateObject("System.Collections.ArrayList")
                If Not sd(Trim(arr2(0)))(arr3(0)).contains(CInt(arr3(1))) Then sd(Trim(arr2(0)))(arr3(0)).Add CInt(arr3(1)) ', arr3(1)
            End If
        Next n
        For Each y In sd
            For Each x In sd(y)
                sd(y)(x).Sort
                If x = "null" Then
                    sd(y).Item(x) = "." & Join(sd(y)(x).toarray, ", ")
                Else
                    sd(y).Item(x) = "~" & x & "." & Join(sd(y)(x).toarray, ", ")
                End If
            Next
            sd(y) = y & Join(sd(y).Items, ", ")
        Next
        arr(i, 1) = Join(sd.Items, "; ")
        sd.RemoveAll
    Next
    Range("K2:K" & lr) = arr
End Sub
[/vba]
Разделитель между словами ";", между группами "~", между номером "."
Можете переделать в пользовательскую функцию, где разделители можно будет вводить вручную
К сообщению приложен файл: gruppirovka_1.xlsm (20.4 Kb)
 
Ответить
СообщениеПопробуйте так
[vba]
Код
Public Sub Перебрать()
    Dim arr, arr1, arr2, arr3, x, y, lr As Long, i As Long, n As Integer
    Set sd = CreateObject("Scripting.Dictionary")
    lr = Cells(Rows.Count, 9).End(xlUp).Row
    arr = Range("I2:I" & lr).Value
    For i = 1 To UBound(arr)
        arr1 = Split(arr(i, 1), ";")
        For n = 0 To UBound(arr1)
            If arr1(n) <> "" Then
                arr2 = Split(arr1(n), "~")
                arr3 = Split(arr2(UBound(arr2)), ".")
                If UBound(arr2) = 0 Then arr2(0) = arr3(0): arr3(0) = "null"
                If Not sd.Exists(Trim(arr2(0))) Then Set sd(Trim(arr2(0))) = CreateObject("Scripting.Dictionary")
                If Not sd(Trim(arr2(0))).Exists(arr3(0)) Then Set sd(Trim(arr2(0)))(arr3(0)) = CreateObject("System.Collections.ArrayList")
                If Not sd(Trim(arr2(0)))(arr3(0)).contains(CInt(arr3(1))) Then sd(Trim(arr2(0)))(arr3(0)).Add CInt(arr3(1)) ', arr3(1)
            End If
        Next n
        For Each y In sd
            For Each x In sd(y)
                sd(y)(x).Sort
                If x = "null" Then
                    sd(y).Item(x) = "." & Join(sd(y)(x).toarray, ", ")
                Else
                    sd(y).Item(x) = "~" & x & "." & Join(sd(y)(x).toarray, ", ")
                End If
            Next
            sd(y) = y & Join(sd(y).Items, ", ")
        Next
        arr(i, 1) = Join(sd.Items, "; ")
        sd.RemoveAll
    Next
    Range("K2:K" & lr) = arr
End Sub
[/vba]
Разделитель между словами ";", между группами "~", между номером "."
Можете переделать в пользовательскую функцию, где разделители можно будет вводить вручную

Автор - msi2102
Дата добавления - 09.06.2023 в 12:42
4step Дата: Пятница, 09.06.2023, 13:53 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Репутация: 0 ±
Замечаний: 40% ±

прохожий2019, прикладываю пример
К сообщению приложен файл: primer1.xlsx (18.0 Kb)
 
Ответить
Сообщениепрохожий2019, прикладываю пример

Автор - 4step
Дата добавления - 09.06.2023 в 13:53
4step Дата: Пятница, 09.06.2023, 13:56 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Репутация: 0 ±
Замечаний: 40% ±

msi2102, походу то что надо, но нужно побольше протестировать. Я ещё прикладываю пример, где добавляю критерий "многоточие", разделяю таблицу вывода на полный и сжатый. Пример прилагаю.
К сообщению приложен файл: gruppirovka_2.xlsm (21.3 Kb)
 
Ответить
Сообщениеmsi2102, походу то что надо, но нужно побольше протестировать. Я ещё прикладываю пример, где добавляю критерий "многоточие", разделяю таблицу вывода на полный и сжатый. Пример прилагаю.

Автор - 4step
Дата добавления - 09.06.2023 в 13:56
прохожий2019 Дата: Пятница, 09.06.2023, 14:54 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 1298
Репутация: 327 ±
Замечаний: 0% ±

365 Beta Channel
прикладываю пример
а в следующем примере циферка будет меняться ещё и посередине? пожалуй я пас
 
Ответить
Сообщение
прикладываю пример
а в следующем примере циферка будет меняться ещё и посередине? пожалуй я пас

Автор - прохожий2019
Дата добавления - 09.06.2023 в 14:54
msi2102 Дата: Пятница, 09.06.2023, 17:41 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Цитата прохожий2019, 09.06.2023 в 14:54, в сообщении № 7 ()
пожалуй я пас
Пожалуй я тоже, смотри ТУТ, ТУТ, ТУТ, а ещё ТУТ, может соберете один универсальный


Сообщение отредактировал msi2102 - Пятница, 09.06.2023, 17:42
 
Ответить
Сообщение
Цитата прохожий2019, 09.06.2023 в 14:54, в сообщении № 7 ()
пожалуй я пас
Пожалуй я тоже, смотри ТУТ, ТУТ, ТУТ, а ещё ТУТ, может соберете один универсальный

Автор - msi2102
Дата добавления - 09.06.2023 в 17:41
4step Дата: Суббота, 10.06.2023, 02:50 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Репутация: 0 ±
Замечаний: 40% ±

прохожий2019, думаю нет.
 
Ответить
Сообщениепрохожий2019, думаю нет.

Автор - 4step
Дата добавления - 10.06.2023 в 02:50
4step Дата: Суббота, 10.06.2023, 03:37 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Репутация: 0 ±
Замечаний: 40% ±

msi2102, благодарю за ссылки! буду искать решение.
 
Ответить
Сообщениеmsi2102, благодарю за ссылки! буду искать решение.

Автор - 4step
Дата добавления - 10.06.2023 в 03:37
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!