Добрый день! имею очень большой прайс данные (в моем случае размерный ряд) не имеют определенной системы, но над данными и есть пустая ячейка (выделено желтым) Как собрать в пустую ячейку (желтую ) все данные, которые находятся до следующей пустой ячейки?
я -выделяла массив, нажала F9- все в 1 ячейку слилось, но строк очень много, файлы часто обновляются.. формулу придумать не могу , что бы ввести ее в пустые ячейк. Помогите пожалуйста с решением задачи или помогите ссылкой на подобную задачу..я несколько дней смотрю сайт , не нашла
Добрый день! имею очень большой прайс данные (в моем случае размерный ряд) не имеют определенной системы, но над данными и есть пустая ячейка (выделено желтым) Как собрать в пустую ячейку (желтую ) все данные, которые находятся до следующей пустой ячейки?
я -выделяла массив, нажала F9- все в 1 ячейку слилось, но строк очень много, файлы часто обновляются.. формулу придумать не могу , что бы ввести ее в пустые ячейк. Помогите пожалуйста с решением задачи или помогите ссылкой на подобную задачу..я несколько дней смотрю сайт , не нашлаС-Елена
Предлагаю такой вариант: 1. в любом свободном столбце со второй строки протягиваем формулу
Код
=IF(A2<>"",D1,ROW())
Тут протягивал в D. Далее в D1 ставим результат из D2 (у меня почему-то 0???) 2. В первой строке (не в столбце A) используем уже ранее написанную UDF
Код
=VLOOKUPCOUPLE(A:D,4,D1,1,";",0)
Последний аргумент указывает что нужно не удалять повторы. Разделители аргументов ставьте свои!!!
3. Копипастом размножаем её в нужные строки ниже.
Код функции где-то на форуме есть, поищу. Странно, не нашёл... [vba]
Код
Function VLOOKUPCOUPLE(Table As Variant, _ SearchColumnNum As Integer, _ SearchValue As Variant, _ RezultColumnNum As Integer, _ Separator_ As String, _ Optional BezPovtorov As Boolean = True)
'Table - таблица, где ищем 'SearchColumnNum - столбец, где ищем 'SearchValue - данные, которые ищем 'RezultColumnNum - колонка, откуда берём результат 'Separator_ - разделитель, желательно вводить с пробелом в конце 'BezPovtorov - если поставить 0, то будут выведены все повторяющиеся совпадения
Dim i As Long, tmp As String, vlk
If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value If BezPovtorov Then With CreateObject("Scripting.Dictionary") For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then tmp = Table(i, RezultColumnNum) If tmp <> "" Then If Not .Exists(tmp) Then .Add tmp, 0& vlk = vlk & Separator_ & Table(i, RezultColumnNum) End If End If End If Next i End With Else For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then vlk = vlk & Separator_ & Table(i, RezultColumnNum) End If Next i End If If vlk > 0 Then vlk = Mid(vlk, Len(Separator_) + 1) Else vlk = "" VLOOKUPCOUPLE = vlk End Function
[/vba]
Предлагаю такой вариант: 1. в любом свободном столбце со второй строки протягиваем формулу
Код
=IF(A2<>"",D1,ROW())
Тут протягивал в D. Далее в D1 ставим результат из D2 (у меня почему-то 0???) 2. В первой строке (не в столбце A) используем уже ранее написанную UDF
Код
=VLOOKUPCOUPLE(A:D,4,D1,1,";",0)
Последний аргумент указывает что нужно не удалять повторы. Разделители аргументов ставьте свои!!!
3. Копипастом размножаем её в нужные строки ниже.
Код функции где-то на форуме есть, поищу. Странно, не нашёл... [vba]
Код
Function VLOOKUPCOUPLE(Table As Variant, _ SearchColumnNum As Integer, _ SearchValue As Variant, _ RezultColumnNum As Integer, _ Separator_ As String, _ Optional BezPovtorov As Boolean = True)
'Table - таблица, где ищем 'SearchColumnNum - столбец, где ищем 'SearchValue - данные, которые ищем 'RezultColumnNum - колонка, откуда берём результат 'Separator_ - разделитель, желательно вводить с пробелом в конце 'BezPovtorov - если поставить 0, то будут выведены все повторяющиеся совпадения
Dim i As Long, tmp As String, vlk
If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value If BezPovtorov Then With CreateObject("Scripting.Dictionary") For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then tmp = Table(i, RezultColumnNum) If tmp <> "" Then If Not .Exists(tmp) Then .Add tmp, 0& vlk = vlk & Separator_ & Table(i, RezultColumnNum) End If End If End If Next i End With Else For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then vlk = vlk & Separator_ & Table(i, RezultColumnNum) End If Next i End If If vlk > 0 Then vlk = Mid(vlk, Len(Separator_) + 1) Else vlk = "" VLOOKUPCOUPLE = vlk End Function
Добрый день. Можно просто макросом без функций [vba]
Код
Sub Marker() Dim s As String Application.ScreenUpdating = False irow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To irow If Cells(i, 1).Value = "" Then adr = Cells(i, 1).Address End If
If Range(adr).Value = "" Then Range(adr).Value = Cells(i, 1).Value Else Range(adr).Value = Range(adr).Value & ";" & Cells(i, 1).Value End If Next i Application.ScreenUpdating = True End Sub
[/vba]
Добрый день. Можно просто макросом без функций [vba]
Код
Sub Marker() Dim s As String Application.ScreenUpdating = False irow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To irow If Cells(i, 1).Value = "" Then adr = Cells(i, 1).Address End If
If Range(adr).Value = "" Then Range(adr).Value = Cells(i, 1).Value Else Range(adr).Value = Range(adr).Value & ";" & Cells(i, 1).Value End If Next i Application.ScreenUpdating = True End Sub
С-Елена, здравствуйте. Предложу решение формулой без дополнительных ячеек. Но есть нюансы 1) Сцепляет до 50 идущих подряд ячеек (без пустых), но можно увеличить формулу 2) В жёлтых ячейках перечисление начинается с точки и запятой ";" 3) При вставке новой строки в середину диапазона работы формулы - эта строка формулой уже учитываться не будет
Её копируете Ctrl+с и вставляете Ctrl+v в следующие жёлтые ячейки В общем смотрите файл
С-Елена, здравствуйте. Предложу решение формулой без дополнительных ячеек. Но есть нюансы 1) Сцепляет до 50 идущих подряд ячеек (без пустых), но можно увеличить формулу 2) В жёлтых ячейках перечисление начинается с точки и запятой ";" 3) При вставке новой строки в середину диапазона работы формулы - эта строка формулой уже учитываться не будет