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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление лишних строк - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Удаление лишних строк (Формулы/Formulas)
Удаление лишних строк
ekut Дата: Пятница, 10.06.2022, 10:51 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Уважаемые Екселисты! Если не трудно, помогите!!Есть график работ со своими обозначениями (11, 8, ОТ, Б, в и т.д.). По каждой позиции желтым выделена расшифровка! Как можно сделать, чтобы лишняя расшифровка(то чего нет в графике работ) удалялась. Например, если в графике работ нет Б, то и в расшифровке строка с Б - БЛ-РабЗабол/Травма отсутствует. Спасибо заранее.
К сообщению приложен файл: 7190932.xlsx(28.7 Kb)
 
Ответить
СообщениеУважаемые Екселисты! Если не трудно, помогите!!Есть график работ со своими обозначениями (11, 8, ОТ, Б, в и т.д.). По каждой позиции желтым выделена расшифровка! Как можно сделать, чтобы лишняя расшифровка(то чего нет в графике работ) удалялась. Например, если в графике работ нет Б, то и в расшифровке строка с Б - БЛ-РабЗабол/Травма отсутствует. Спасибо заранее.

Автор - ekut
Дата добавления - 10.06.2022 в 10:51
msi2102 Дата: Пятница, 10.06.2022, 14:07 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 65 ±
Замечаний: 0% ±

Excel 2007
А что делать с позициями которых нет, например "7,2" или "ПП/4"?
Если офис 2019 и выше то можно так:
[vba]
Код
=ЕСЛИОШИБКА(СОРТ(ВПР(СЖПРОБЕЛЫ(ПРОПИСН(УНИК(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(МАССИВВТЕКСТ(D14:AH29);"; ";"</s><s>")&"</s></t>";"//s"))))&" *";Лист1!A1:A33;1;0));"")
[/vba]

Только исправьте данные на "Лист1", что бы перед "-" везде стоял пробел
К сообщению приложен файл: 0508643.xlsx(30.3 Kb)
 
Ответить
СообщениеА что делать с позициями которых нет, например "7,2" или "ПП/4"?
Если офис 2019 и выше то можно так:
[vba]
Код
=ЕСЛИОШИБКА(СОРТ(ВПР(СЖПРОБЕЛЫ(ПРОПИСН(УНИК(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(МАССИВВТЕКСТ(D14:AH29);"; ";"</s><s>")&"</s></t>";"//s"))))&" *";Лист1!A1:A33;1;0));"")
[/vba]

Только исправьте данные на "Лист1", что бы перед "-" везде стоял пробел

Автор - msi2102
Дата добавления - 10.06.2022 в 14:07
ekut Дата: Пятница, 10.06.2022, 14:52 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо огромное!!! 7,2 и остальное я допишу!!!Но...... офис 2010??? :o :o :o, СООТВЕТСВТВЕННО ФОРМУЛА НЕ РАБОТАЕТ!!!!!!!


Сообщение отредактировал ekut - Пятница, 10.06.2022, 15:54
 
Ответить
СообщениеСпасибо огромное!!! 7,2 и остальное я допишу!!!Но...... офис 2010??? :o :o :o, СООТВЕТСВТВЕННО ФОРМУЛА НЕ РАБОТАЕТ!!!!!!!

Автор - ekut
Дата добавления - 10.06.2022 в 14:52
msi2102 Дата: Пятница, 10.06.2022, 16:47 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 65 ±
Замечаний: 0% ±

Excel 2007
СООТВЕТСВТВЕННО ФОРМУЛА НЕ РАБОТАЕТ!!!!!!!
Ну это и понятно, я же Вам писал ЕСЛИ ОФИС 2019 И ВЫШЕ
Всё, что было до этого забыл как страшный сон
Сделайте макросом, например таким:
[vba]
Код
Sub Выбор()
    Dim rng As Range, arr As Variant, arr1 As Variant, arr2 As Variant, n As Long
    Set sca = CreateObject("System.Collections.ArrayList")
    Set rng = Application.InputBox("Выделите диапазон в графике", "Данные", Type:=8)
    If rng Is Nothing Then MsgBox "Отмена выполнения", vbCritical, "Нет данных": Exit Sub
    arr = rng.Value
    Set rng = Application.InputBox("Выделите диапазон в базе", "Данные", Type:=8)
    If rng Is Nothing Then MsgBox "Отмена выполнения", vbCritical, "Нет данных": Exit Sub
    arr1 = rng.Value
    For Each i In arr
        If i <> "" Then If Not sca.contains(CStr(i)) Then sca.Add CStr(i)
    Next i
    sca.Sort
    ReDim arr2(1 To sca.Count, 1 To 1)
    For n = 1 To UBound(arr2)
        For m = 1 To UBound(arr1)
            If UCase(Replace(sca.Item(n - 1), " ", "") & "-") = UCase(Left(Replace(arr1(m, 1), " ", ""), Len(Replace(sca.Item(n - 1), " ", "")) + 1)) Then
                arr2(n, 1) = arr1(m, 1)
                Exit For
            Else
                arr2(n, 1) = sca.Item(n - 1)
            End If
        Next m
    Next n
    Set rng = Application.InputBox("Выделите ячейку для вставки результата", "Данные", Type:=8)
    If rng Is Nothing Then MsgBox "Отмена выполнения", vbCritical, "Нет данных": Exit Sub
    rng(1).Resize(UBound(arr2)) = arr2
End Sub
[/vba]
К сообщению приложен файл: 7190932.xlsm(40.1 Kb)


Сообщение отредактировал msi2102 - Пятница, 10.06.2022, 16:58
 
Ответить
Сообщение
СООТВЕТСВТВЕННО ФОРМУЛА НЕ РАБОТАЕТ!!!!!!!
Ну это и понятно, я же Вам писал ЕСЛИ ОФИС 2019 И ВЫШЕ
Всё, что было до этого забыл как страшный сон
Сделайте макросом, например таким:
[vba]
Код
Sub Выбор()
    Dim rng As Range, arr As Variant, arr1 As Variant, arr2 As Variant, n As Long
    Set sca = CreateObject("System.Collections.ArrayList")
    Set rng = Application.InputBox("Выделите диапазон в графике", "Данные", Type:=8)
    If rng Is Nothing Then MsgBox "Отмена выполнения", vbCritical, "Нет данных": Exit Sub
    arr = rng.Value
    Set rng = Application.InputBox("Выделите диапазон в базе", "Данные", Type:=8)
    If rng Is Nothing Then MsgBox "Отмена выполнения", vbCritical, "Нет данных": Exit Sub
    arr1 = rng.Value
    For Each i In arr
        If i <> "" Then If Not sca.contains(CStr(i)) Then sca.Add CStr(i)
    Next i
    sca.Sort
    ReDim arr2(1 To sca.Count, 1 To 1)
    For n = 1 To UBound(arr2)
        For m = 1 To UBound(arr1)
            If UCase(Replace(sca.Item(n - 1), " ", "") & "-") = UCase(Left(Replace(arr1(m, 1), " ", ""), Len(Replace(sca.Item(n - 1), " ", "")) + 1)) Then
                arr2(n, 1) = arr1(m, 1)
                Exit For
            Else
                arr2(n, 1) = sca.Item(n - 1)
            End If
        Next m
    Next n
    Set rng = Application.InputBox("Выделите ячейку для вставки результата", "Данные", Type:=8)
    If rng Is Nothing Then MsgBox "Отмена выполнения", vbCritical, "Нет данных": Exit Sub
    rng(1).Resize(UBound(arr2)) = arr2
End Sub
[/vba]

Автор - msi2102
Дата добавления - 10.06.2022 в 16:47
ekut Дата: Пятница, 10.06.2022, 17:42 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 171
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо огромное!!!!! Буду разбираться. С формулой, конечно, более удобно и короче!!!!!!!Еще раз огромное спасибо!
 
Ответить
СообщениеСпасибо огромное!!!!! Буду разбираться. С формулой, конечно, более удобно и короче!!!!!!!Еще раз огромное спасибо!

Автор - ekut
Дата добавления - 10.06.2022 в 17:42
msi2102 Дата: Пятница, 10.06.2022, 17:51 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 65 ±
Замечаний: 0% ±

Excel 2007
С формулой, конечно, более удобно и короче
Сомневаюсь, что 2010 будет короче :)
 
Ответить
Сообщение
С формулой, конечно, более удобно и короче
Сомневаюсь, что 2010 будет короче :)

Автор - msi2102
Дата добавления - 10.06.2022 в 17:51
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Удаление лишних строк (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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