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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнить лист данными с листа имеющего объединенные ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнить лист данными с листа имеющего объединенные ячейки (Макросы/Sub)
Заполнить лист данными с листа имеющего объединенные ячейки
blood Дата: Четверг, 02.03.2023, 12:36 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 20% ±

Добрый день.
Файл Excel во вложении. заполняются листы "Товары", "Сотрудники".На листе "Прайс" выбирается товар из списка, ставится количество и цена (берется например из счета-фактуры)-приход. на листе "Раздача" делается расход. Выбираем сотрудника и заполняем количество выданного товара. В шапке на листе "Раздача" наименование товара проставляется автоматически, берется с листа "Прайс". Суть проблемы в том, что нужно заполнить лист "Расшифровка" данными из листа "Раздача", где переносилась ФИО, наименование выданного товара и сумма этого товара по каждому наименованию, в конце итоговая сумма по ФИО. Есть макрос с помощью которого можно скрыть не нужные столбцы на листе "Раздача" с количеством и ценой.
[vba]
Код
Sub HideCell()
Application.ScreenUpdating = False
Dim iCell As Range
For Each iCell In ActiveSheet.UsedRange.Rows(14).Cells
If iCell.Value = "кол" Then
iCell.Columns.Hidden = Not iCell.Columns.Hidden
ElseIf iCell.Value = "цена" Then
iCell.Columns.Hidden = Not iCell.Columns.Hidden
End If
Next
Application.ScreenUpdating = True
End Sub
[/vba]
Т.е я могу скрыть колонки таблицы с количеством и ценой.
Проблема в объединенных ячейках содержащих наименование товара, не могу разобраться как перенести данные на лист ""Расшифровка". Может быть перенести "сумму" с удалением столбцов "кол" и "цена" на лист "Расшифровка" макросом. Не знаю как подобное сделать в макросе, чтобы осталось наименование товара и сумма.
К сообщению приложен файл: otchet_12345.xlsm (388.6 Kb)


Сообщение отредактировал Serge_007 - Четверг, 02.03.2023, 12:43
 
Ответить
СообщениеДобрый день.
Файл Excel во вложении. заполняются листы "Товары", "Сотрудники".На листе "Прайс" выбирается товар из списка, ставится количество и цена (берется например из счета-фактуры)-приход. на листе "Раздача" делается расход. Выбираем сотрудника и заполняем количество выданного товара. В шапке на листе "Раздача" наименование товара проставляется автоматически, берется с листа "Прайс". Суть проблемы в том, что нужно заполнить лист "Расшифровка" данными из листа "Раздача", где переносилась ФИО, наименование выданного товара и сумма этого товара по каждому наименованию, в конце итоговая сумма по ФИО. Есть макрос с помощью которого можно скрыть не нужные столбцы на листе "Раздача" с количеством и ценой.
[vba]
Код
Sub HideCell()
Application.ScreenUpdating = False
Dim iCell As Range
For Each iCell In ActiveSheet.UsedRange.Rows(14).Cells
If iCell.Value = "кол" Then
iCell.Columns.Hidden = Not iCell.Columns.Hidden
ElseIf iCell.Value = "цена" Then
iCell.Columns.Hidden = Not iCell.Columns.Hidden
End If
Next
Application.ScreenUpdating = True
End Sub
[/vba]
Т.е я могу скрыть колонки таблицы с количеством и ценой.
Проблема в объединенных ячейках содержащих наименование товара, не могу разобраться как перенести данные на лист ""Расшифровка". Может быть перенести "сумму" с удалением столбцов "кол" и "цена" на лист "Расшифровка" макросом. Не знаю как подобное сделать в макросе, чтобы осталось наименование товара и сумма.

Автор - blood
Дата добавления - 02.03.2023 в 12:36
jun Дата: Четверг, 02.03.2023, 14:19 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

blood, приветствую!
Можно, например так:
[vba]
Код
Sub fill_table()
Dim arr, lr As Long, lc As Long, i As Long, j As Long
' загрузка данных в массив
With Worksheets("Раздача")
    lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    arr = .Range("A17:N" & lr) ' здесь последний столбец - N (при необходимости изменить на последний столбец)
End With
' заполнение листа Расшифровка
With Worksheets("Расшифровка")
    lr = 8 ' номер первой строки для выгрузки данных на лист
    lc = 2 ' номер первого столбца (для фамилии)
    For j = LBound(arr, 1) To UBound(arr, 1)
        .Cells(lr, lc) = arr(j, 1)
        lc = lc + 1
        For i = 5 To UBound(arr, 2) Step 3 ' цикл начинается с 5 столбца & _
                    (суммы по полю Бумага на листе Раздача) с шагом 3
            .Cells(lr, lc) = arr(j, i)
            lc = lc + 1
        Next i
        lc = 2: lr = lr + 1
    Next j
End With
End Sub
[/vba]
Запускать по Alt+F8 -> fill_table
Код находится в модуле с именем "заполнить_расшифровку"
К сообщению приложен файл: otchet_12345.xlsb (345.0 Kb)
 
Ответить
Сообщениеblood, приветствую!
Можно, например так:
[vba]
Код
Sub fill_table()
Dim arr, lr As Long, lc As Long, i As Long, j As Long
' загрузка данных в массив
With Worksheets("Раздача")
    lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    arr = .Range("A17:N" & lr) ' здесь последний столбец - N (при необходимости изменить на последний столбец)
End With
' заполнение листа Расшифровка
With Worksheets("Расшифровка")
    lr = 8 ' номер первой строки для выгрузки данных на лист
    lc = 2 ' номер первого столбца (для фамилии)
    For j = LBound(arr, 1) To UBound(arr, 1)
        .Cells(lr, lc) = arr(j, 1)
        lc = lc + 1
        For i = 5 To UBound(arr, 2) Step 3 ' цикл начинается с 5 столбца & _
                    (суммы по полю Бумага на листе Раздача) с шагом 3
            .Cells(lr, lc) = arr(j, i)
            lc = lc + 1
        Next i
        lc = 2: lr = lr + 1
    Next j
End With
End Sub
[/vba]
Запускать по Alt+F8 -> fill_table
Код находится в модуле с именем "заполнить_расшифровку"

Автор - jun
Дата добавления - 02.03.2023 в 14:19
blood Дата: Пятница, 03.03.2023, 05:51 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 20% ±

jun, Добрый день.
Спасибо за макрос. Проблема в том что если указать последний столбец таблицы IF (сделано с запасом для пользователей, чтобы сами не добавляли столбцы с формулами).
Расшифровка заполнится 0
Нужно чтобы Расшифровка масштабировалась в зависимости от ФИО, указанных в "Раздаче" и Товара выбранного в "Прайс".
По ФИО масштабируется замечательно, по Товару не совсем корректно.
Во вложении то что получилось после работы макроса если добавили ФИО и новый товар. С комментариями.
К сообщению приложен файл: otchet_12345_kom.xlsb (357.2 Kb)
 
Ответить
Сообщениеjun, Добрый день.
Спасибо за макрос. Проблема в том что если указать последний столбец таблицы IF (сделано с запасом для пользователей, чтобы сами не добавляли столбцы с формулами).
Расшифровка заполнится 0
Нужно чтобы Расшифровка масштабировалась в зависимости от ФИО, указанных в "Раздаче" и Товара выбранного в "Прайс".
По ФИО масштабируется замечательно, по Товару не совсем корректно.
Во вложении то что получилось после работы макроса если добавили ФИО и новый товар. С комментариями.

Автор - blood
Дата добавления - 03.03.2023 в 05:51
jun Дата: Пятница, 03.03.2023, 10:19 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

Проверяйте, подправил
P.S:
в процессе работы макрос очищает лист и создает таблицу заново после каждого запуска.
К сообщению приложен файл: otchet_12345_kom_v1.xlsb (354.4 Kb)


Сообщение отредактировал jun - Пятница, 03.03.2023, 10:27
 
Ответить
СообщениеПроверяйте, подправил
P.S:
в процессе работы макрос очищает лист и создает таблицу заново после каждого запуска.

Автор - jun
Дата добавления - 03.03.2023 в 10:19
blood Дата: Пятница, 03.03.2023, 11:46 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 20% ±

Спасибо за объяснения в макросе.
В понедельник проверим на большом количестве данных.
Сейчас все заполняется безупречно.
 
Ответить
СообщениеСпасибо за объяснения в макросе.
В понедельник проверим на большом количестве данных.
Сейчас все заполняется безупречно.

Автор - blood
Дата добавления - 03.03.2023 в 11:46
jun Дата: Пятница, 03.03.2023, 13:54 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

blood, пожалуйста. :)
Понял Вас.
P.S. забыл уточнить, что макрос собирает данные в массив до первого нуля. То есть, на листе "Раздача" загрузка наименований в массив (бумага, ручки и т.д.) идет до первого встреченного нуля. После этого код продолжает работу дальше.


Сообщение отредактировал jun - Пятница, 03.03.2023, 18:06
 
Ответить
Сообщениеblood, пожалуйста. :)
Понял Вас.
P.S. забыл уточнить, что макрос собирает данные в массив до первого нуля. То есть, на листе "Раздача" загрузка наименований в массив (бумага, ручки и т.д.) идет до первого встреченного нуля. После этого код продолжает работу дальше.

Автор - jun
Дата добавления - 03.03.2023 в 13:54
blood Дата: Понедельник, 06.03.2023, 11:59 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 20% ±

Добрый день.
Спасибо за P.S. :)
Все работает.
СПАСИБО!!!
 
Ответить
СообщениеДобрый день.
Спасибо за P.S. :)
Все работает.
СПАСИБО!!!

Автор - blood
Дата добавления - 06.03.2023 в 11:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнить лист данными с листа имеющего объединенные ячейки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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