Страницы: 1
RSS
Вывод содержимого ячейки через поиск части текста в диапазоне, используя порядок вхождений., Вывод содержимого ячейки через поиск части текста в диапазоне, используя порядок вхождений.
 
Великие мастера Excel направьте пожалуйста в правильную сторону. Мне нужно сделать так, чтобы по определённому признаку в тексте ячейки, Excel понимал, что это первое вхождение и забирал содержимое этой ячейки, вставляя его в ячейку А2 на листе 1. Далее точно также со вторым вхождением только уже вставлять в ячейку А3 и тд. т.е упорядочивал найденные варианты и вставлял их друг под другом в том порядке в котором находил. В моём примере необходимо получить содержимое ячеек текст которых содержит символ"."(точку). 1 вхождение = одна ячейка в диапазоне.
 
Покажите в файле нужный результат
Согласие есть продукт при полном непротивлении сторон
 
Если правильно понял. Для 2021+
Код
=ФИЛЬТР.XML("<l><i>"&ОБЪЕДИНИТЬ("</i><i>";1;ЕСЛИ(ЕЧИСЛО(ПОИСК(".";Лист2!B2:E10));Лист2!B2:E10;""))&"</i></l>";"//i")
Согласие есть продукт при полном непротивлении сторон
 
или так:
Код
=ФИЛЬТР.XML("<l><i>"&ОБЪЕДИНИТЬ("</i><i>";1;Лист2!B2:E10)&"</i></l>";"//i[contains(., '.')]")

можно так:
Код
=ФИЛЬТР.XML("<j>"&СЦЕП("<i>"&Лист2!B2:E10&"</i>")&"</j>";"//i[contains(., '.')]")

Если нужна последовательность по столбцам, то так:
Код
=ФИЛЬТР.XML("<l><i>"&ОБЪЕДИНИТЬ("</i><i>";1;ТРАНСП(Лист2!B2:E10))&"</i></l>";"//i[contains(., '.')]")

или так:
Код
=ФИЛЬТР.XML("<j>"&СЦЕП("<i>"&ТРАНСП(Лист2!B2:E10)&"</i>")&"</j>";"//i[contains(., '.')]")
 
вариант:
формула
 
Вариант макросом. Вставьте код в модуль Лист2.
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    ConnectSheets "Лист1", "Лист2"
End Sub

Sub ConnectSheets(targetName As String, sourceName As String)
    Dim sht As Worksheet: Set sht = Sheets(targetName)
    Dim shs As Worksheet: Set shs = Sheets(sourceName)
    
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    
    Dim cs As Range, cs_Value As String
    For Each cs In shs.UsedRange.Cells
        cs_Value = cs.Value
        If InStr(cs_Value, ".") > 0 Then
            If Not cs_Value Like "#." Then
                If Not dic.Exists(cs_Value) Then
                    dic.Add cs_Value, "='" & sourceName & "'!" & cs.Address(0, 0, xlA1)
                End If
            End If
        End If
    Next
    Dim arr As Variant
    arr = RedimArr(dic.Items())
    
    PrintArray arr, sht.Cells(2, 1)
End Sub

Private Sub PrintArray(arr As Variant, cl As Range)
    cl.Cells(2, 1).Resize(cl.Parent.UsedRange.Rows.Count).Clear
    If IsEmpty(arr) Then Exit Sub
    
    If UBound(arr, 1) > 1 Then
        cl.Copy cl.Resize(UBound(arr, 1), UBound(arr, 2))
    End If
    cl.Resize(UBound(arr, 1), UBound(arr, 2)).Value = arr
End Sub

Private Function RedimArr(arr As Variant) As Variant
    If LBound(arr) > UBound(arr) Then Exit Function
    Dim brr As Variant, ya As Long, yb As Long
    ReDim brr(1 To UBound(arr) - LBound(arr) + 1, 1 To 1)
    yb = LBound(brr, 1) - 1
    For ya = LBound(arr) To UBound(arr)
        yb = yb + 1
        brr(yb, 1) = arr(ya)
    Next
    RedimArr = brr
End Function
 
Друзья, вы не реально крутые всем спасибо большое. Все варианты подошли, да я именно так и хотел. Буду изучать и разбирать формулы. Много конечно у меня вопросов 2 из них прилагаю в скриншоте. вопрос 1 - Что делает эта конструкция и что это за символы? Вопрос 2 - Какую роль знак процента играет в конечном результате? Если несложно подскажите словами или хотя бы где про это можно почитать?
 
Sanja, Спасибо за помощь, я уверенный пользователь Excel,  но инструмент который вы предложили, словно с другой планеты. Где прочитать про это? Что за странные символы s </i> I // %% (что это значит :) )? И ещё вопрос - почему когда в таблицу добавляешь новые данные формула отображает ошибку ИМЯ?
 
Цитата
Вадим написал: почему когда в таблицу добавляешь новые данные формула отображает ошибку ИМЯ?
Цитата
Sanja написал: Для 2021+
Если у Вас Excel более ранней версии, то этой функции там нет.
Цитата
Вадим написал: Где прочитать про это?
Для начала можно почитать ТУТ
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Sanja  написал: Для 2021+
У меня 2019 всё ок, думаю в 2016 тоже должен заработать
 
Цитата
Msi2102 написал:
думаю в 2016 тоже должен
ОБЪЕДИНИТЬ появилась в 2019
 
Цитата
bigorq написал:
ОБЪЕДИНИТЬ появилась в 2019
Да но не 2021. Поэтому у меня есть ещё СЦЕП, если не ошибаюсь она появилась в 2016, хотя это не точно
Изменено: Msi2102 - 31.07.2025 13:58:02
 
Цитата
Msi2102:  СЦЕП, если не ошибаюсь она появилась в 2016
нетю в 2016 (у меня по крайней мере)
Цитата
Вадим:   %% (что это значит
Вадим,  объяснять лень см файл
...и в вашей версии можно использовать АГРЕГАТ вместо НАИМЕНЬШИЙ
Изменено: ПавелW - 31.07.2025 16:33:28
 
Цитата
ПавелW написал:
нетю в 2016 (у меня по крайней мере)
Да согласен это было по подписке.
 
Ребята, ещё такая вводная. Подскажите пожалуйста чем можно заменить функции: СЦЕП, Объединить, ЛЕВБ? - если в Excel 2016 их нет.  
 
Цитата
Подскажите пожалуйста чем можно заменить функции: СЦЕП, Объединить, ЛЕВБ?
Вадим,    ЛЕВБ то же что и ЛЕВСИМВ  (и её не обязательно заменять))
остальные в вашей версии можно заменить только доп.столбцом (т.е. доп.вычислениями)
...Лист2!F1   #13
Страницы: 1
Читают тему
Наверх