Опишу файл. есть 4 человека, расходующие деньги(соответственно 4 закладки). в 5-й закладке ("Общее") нужно совместить данные из первых четырех столбцов. Через формулу "=" переношу первые строки из 4-х листов в 5-й. получается 4 строки, далее нужно растянуть ниже формулу для того чтобы автоматически переходили данные из первых 4-х. НО эксель, нехороший программ, формулы вставляет в другой последовательности( Помогите пжлста....
Опишу файл. есть 4 человека, расходующие деньги(соответственно 4 закладки). в 5-й закладке ("Общее") нужно совместить данные из первых четырех столбцов. Через формулу "=" переношу первые строки из 4-х листов в 5-й. получается 4 строки, далее нужно растянуть ниже формулу для того чтобы автоматически переходили данные из первых 4-х. НО эксель, нехороший программ, формулы вставляет в другой последовательности( Помогите пжлста....VSpolun
А вот я сейчас как обижусь! Для Бороды - кофе, чай, сок, какао. А нормальные напитки где?
В файле в красных формулах вручную поменяно название листа. Потом эти 4 формулы растянуты вправо, потом выделяются ячейки А2:D5 и за уголок тянутся вниз на сколько нужно. Если протянуто больше, чем нужно, то нули скрываются условным форматированием.
А вот я сейчас как обижусь! Для Бороды - кофе, чай, сок, какао. А нормальные напитки где?
В файле в красных формулах вручную поменяно название листа. Потом эти 4 формулы растянуты вправо, потом выделяются ячейки А2:D5 и за уголок тянутся вниз на сколько нужно. Если протянуто больше, чем нужно, то нули скрываются условным форматированием._Boroda_
В файле в красных формулах вручную поменяно название листа. Потом эти 4 формулы растянуты вправо, потом выделяются ячейки А2:D5 и за уголок тянутся вниз на сколько нужно. Если протянуто больше, чем нужно, то нули скрываются условным форматированием.
Спс, работает но не совсем так как надо. В закладках по людям не будет никогда ровного кол-ва строк. и как теперь видно в файле. В листе "общие" получаются пустые строки. Как их убрать? и следующий вопрос, как мне все это самому сделать(распиши поподробней) и как добавить новую вкладку(человека) без косяков?
В файле в красных формулах вручную поменяно название листа. Потом эти 4 формулы растянуты вправо, потом выделяются ячейки А2:D5 и за уголок тянутся вниз на сколько нужно. Если протянуто больше, чем нужно, то нули скрываются условным форматированием.
Спс, работает но не совсем так как надо. В закладках по людям не будет никогда ровного кол-ва строк. и как теперь видно в файле. В листе "общие" получаются пустые строки. Как их убрать? и следующий вопрос, как мне все это самому сделать(распиши поподробней) и как добавить новую вкладку(человека) без косяков?VSpolun
Интересный вариант, опять-же напишите как вы это сделали пжлста. И как и в предыдущем варианте добавил строки в одной закладке и в листе "общие" все криво стало(
Интересный вариант, опять-же напишите как вы это сделали пжлста. И как и в предыдущем варианте добавил строки в одной закладке и в листе "общие" все криво стало(VSpolun
Не понял по какому принципу вы их сводите в общий лист, так что предлагаю тупо копировать все данные макросом :[vba]
Код
Sub all() Dim lastRow&, lastRowALL&, i& With ThisWorkbook .Sheets("Общее!!").[A2:D1048576].ClearContents
For i = 1 To .Sheets.Count If Not .Sheets(i).Name = "Общее!!" Then lastRow = .Sheets(i).[A1048576].End(xlUp).Row .Sheets(i).Range("A2:D" & lastRow).Copy lastRowALL = .Sheets("Общее!!").[A1048576].End(xlUp).Row + 1 .Sheets("Общее!!").Cells(lastRowALL, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats End If Next
Application.CutCopyMode = False .Sheets("Общее!!").Cells(1, 1).Activate End With End Sub
[/vba]
Не понял по какому принципу вы их сводите в общий лист, так что предлагаю тупо копировать все данные макросом :[vba]
Код
Sub all() Dim lastRow&, lastRowALL&, i& With ThisWorkbook .Sheets("Общее!!").[A2:D1048576].ClearContents
For i = 1 To .Sheets.Count If Not .Sheets(i).Name = "Общее!!" Then lastRow = .Sheets(i).[A1048576].End(xlUp).Row .Sheets(i).Range("A2:D" & lastRow).Copy lastRowALL = .Sheets("Общее!!").[A1048576].End(xlUp).Row + 1 .Sheets("Общее!!").Cells(lastRowALL, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats End If Next
Application.CutCopyMode = False .Sheets("Общее!!").Cells(1, 1).Activate End With End Sub
И вам спасибо! Единственное опять-же просьба - напишите как вы создаете этот макрос. И можете отсортировать в итоге по дате, а не по человеку? [moder]Зачем цитируете пост целиком? Отвечать можно и без цитирования[/moder]
И вам спасибо! Единственное опять-же просьба - напишите как вы создаете этот макрос. И можете отсортировать в итоге по дате, а не по человеку? [moder]Зачем цитируете пост целиком? Отвечать можно и без цитирования[/moder]VSpolun
Добавил сортировку и откомментировал немного. [vba]
Код
Sub all() Dim lastRow&, lastRowALL&, i& 'обявляем переменные. & = long With ThisWorkbook .Sheets("Общее!!").[A2:D1048576].ClearContents ' очищаем диапазон
For i = 1 To .Sheets.Count 'начинаем цикл по листам. i = номер листа. шитс каунт = колво листов If Not .Sheets(i).Name = "Общее!!" Then 'если лист номер i не зовется общее, то продолжаем. lastRow = .Sheets(i).[A1048576].End(xlUp).Row 'определяем последнюю заполенную строку на листе i .Sheets(i).Range("A2:D" & lastRow).Copy 'копируем заполненый диапазон lastRowALL = .Sheets("Общее!!").[A1048576].End(xlUp).Row + 1 'определяем первую пустую строку на листе Общее .Sheets("Общее!!").Cells(lastRowALL, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats ' Вставляем только значения на лист ОБЩЕЕ End If 'заканчиваем условие Next 'следующий лист End With
' Сортировка lastRowALL = .Sheets("Общее!!").[A1048576].End(xlUp).Row + 1 'определяем первую пустую строку на листе Общее With ThisWorkbook.Sheets("Общее!!").Sort .SortFields.Add Key:=Range("A2:A" & lastRowALL) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange Range("A2:D" & lastRowALL) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Application.CutCopyMode = False 'удалить из буфера скопированный диапазон ThisWorkbook.Sheets("Общее!!").Cells(1, 1).Activate 'активируем А1 на листе общее End Sub
[/vba]
Добавил сортировку и откомментировал немного. [vba]
Код
Sub all() Dim lastRow&, lastRowALL&, i& 'обявляем переменные. & = long With ThisWorkbook .Sheets("Общее!!").[A2:D1048576].ClearContents ' очищаем диапазон
For i = 1 To .Sheets.Count 'начинаем цикл по листам. i = номер листа. шитс каунт = колво листов If Not .Sheets(i).Name = "Общее!!" Then 'если лист номер i не зовется общее, то продолжаем. lastRow = .Sheets(i).[A1048576].End(xlUp).Row 'определяем последнюю заполенную строку на листе i .Sheets(i).Range("A2:D" & lastRow).Copy 'копируем заполненый диапазон lastRowALL = .Sheets("Общее!!").[A1048576].End(xlUp).Row + 1 'определяем первую пустую строку на листе Общее .Sheets("Общее!!").Cells(lastRowALL, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats ' Вставляем только значения на лист ОБЩЕЕ End If 'заканчиваем условие Next 'следующий лист End With
' Сортировка lastRowALL = .Sheets("Общее!!").[A1048576].End(xlUp).Row + 1 'определяем первую пустую строку на листе Общее With ThisWorkbook.Sheets("Общее!!").Sort .SortFields.Add Key:=Range("A2:A" & lastRowALL) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange Range("A2:D" & lastRowALL) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Application.CutCopyMode = False 'удалить из буфера скопированный диапазон ThisWorkbook.Sheets("Общее!!").Cells(1, 1).Activate 'активируем А1 на листе общее End Sub
SkyPro, Спасибо огромное! Я то думал что я эксель знаю... оказывается вообще не в теме... Все равно не понимаю как мне это самому сделать в существующей книге((
SkyPro, Спасибо огромное! Я то думал что я эксель знаю... оказывается вообще не в теме... Все равно не понимаю как мне это самому сделать в существующей книге((VSpolun