Доброго времени суток! Не думал что столкнусь с такой проблемой. Достаточно хорошо знаю Excel. Но все таки нужно обращаться за помощью. Уже второй день сижу и не могу найти решение. С помощью функции ВПР или ИНДЕКС и ПОИСКПОЗ или СМЕЩ можно найти интересующее значение по двум параметрам. С этой задачей данные функции справляются на ура. А что делать если нужно найти значение по 3-м параметрам? Можно было бы использовать СУММЕСЛИМН, но есть маленькая деталь... Эта деталь заключается в поле "Дата". Есть таблица с информацией об изменении окладов (лист "Исходник) где стоит дата изменения, и нужно из этой таблицы вытащить данные в другую таблицу по Дате, ФИО и по названию вида затрат (Оклад или налог). Проблема в том что Дата в конечной таблице не будет совпадать с датой в источнике и нужно найти ближайшую дату изменения оклада, потом ФИО и вытянуть расходы. Так как в Исходнике есть информация о предыдущих окладах то нужно чтобы в новую таблицу они попали по датам правильно. Прилагаю файл с примером. В лист "База" нужно вытянуть данные об окладе и ндфл из листа "Исходник". Ячейки окрашены. Может кто-нибудь подскажет хитроумную конструкцию)
Нужно сложить числа написанные в одной ячейке через дробь. Например, в ячейке написано 1/200/50/60. Нужно в другую ячейку написать результат сложения этих чисел, т.е. 311. Хотелось бы через процедуру Function это реализовать если макросом решать вопрос, или лучше всего встроенными функциями. Все перепробовал ничего не получается.
Добрый день! Прошу вашей помощи так как зашел в тупик при написании кода и поиск подобного не находит. Пытаюсь написать макрос который сам объединил бы ячейки в шапке таблицы по иерархии. В файле понятнее станет не примере. Во вложении файл где указано "как было" и "как хотелось бы". Ниже привожу варианты кода которые не могу закончить. Заранее большое спасибо.
Код
Sub MergeHeadTest2()
Dim mas() As Long
Dim sel As Range
Dim cl As Range
Dim r, c, i As Long
Set sel = Selection
sel.UnMerge
r = 1
c = 1
i = 1
For c = 1 To sel.Columns.Count
If sel.Cells(r, c).Value <> "" Then
If c - i = 1 Then
Range(sel.Cells(r, i), sel.Cells(sel.Rows.Count, i)).Merge
i = i + 1
ElseIf c - i > 1 Then
Range(sel.Cells(r, i), sel.Cells(r, c - 1)).Merge
End If
End If
Next c
End Sub
Код
Sub MergeHeadTest()
'Объединение ячеек в заголовке
Dim i As Integer
Dim j As Integer
Dim g As Range
Dim mas()
Set g = Selection
With g
For i = 1 To .Columns.Count
If .Cells(1, i).Value <> "" Then
j = j + 1
ReDim Preserve mas(1 To j)
mas(j) = i
End If
Next i
If mas(UBound(mas)) <> .Columns.Count Then
j = j + 1
ReDim Preserve mas(1 To j)
mas(j) = .Columns.Count
End If
For i = LBound(mas) To UBound(mas)
If i = UBound(mas) Then
Range(.Cells(1, mas(i)), .Cells(1, mas(i))).Merge
Else
Range(.Cells(1, mas(i)), .Cells(1, mas(i + 1) - 1)).Merge
End If
Next i
If .Rows.Count > 1 Then
For i = LBound(mas) To UBound(mas)
If i = UBound(mas) Then
Range(.Cells(1, mas(i)), .Cells(1, mas(i))).Merge
Else
Range(.Cells(1, mas(i)), .Cells(1, mas(i + 1) - 1)).Merge
End If
Next i
End If
End With
End Sub
Добрый день! Поискал, погуглил но что то не нашел нужного. Возможно с ключевыми словами не угадал. Поэтому обращаюсь к вам. Хочу сделать автоформат таблицы по своим параметрам. Сейчас основной тупик в том как разделить выделенный диапазон на области, т.е. область данных (значения, формулы и т.д.), область заголовка (одна или более строк), область подписей (обычно слева построчно), область итога по строкам, область итога по столбцам. Хотелось бы знать адреса всех этих областей и манипулировать ими уже как мне нужно. Начинаю с CurrentRegion
Код
Sub Test()
Dim rng as Range
'Выделяем текущую область
Set rng = Activecell.CurrentRegion
rng.Select
End Sub
Подпись таблицы тоже захватывается, ее надо убрать из выделенного диапазона. Конечно можно создать форму и вставить туда элемент управления RefEdit несколько штук и все области повыделять, но это долго и не интересно. Прошу вашей помощи) Файл во вложении как пример.