Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Cобрать данные из столбца в строку
 
Такое сработает если порядок следования Объектов в Табл1 и Табл2 одинаковый, а если нет, то я вижу только построчный:
Код
    lr = Worksheets(1).Cells(Rows.Count, "A").End(xlUp).Row
    For i = 3 To lr
        s1 = Worksheets(1).Cells(i, 1)
        Worksheets(1).Cells(i, 3).Resize(1, dic1(s1).Count) = dic1(s1).Items
    Next i
Изменено: venrt - 26.11.2021 12:16:07
Cобрать данные из столбца в строку
 
Цитата
написал:
или вы всё же макрос хотите?
Макросом у меня была идея проходится двумя Find суммировать, и потом получившуюся сумму вставлять в нужную ячейку. Практически таже СуммаЕсли.

Цитата
написал:
Макросом
О спасибо  
Cобрать данные из столбца в строку
 
Да, думал про формулу, думаю пойдёт на без рыбье))
Cобрать данные из столбца в строку
 
Столбец "Какие-то данные" показывает, что в Табл1 есть и другие столбцы, которые нужны и их убирать не нужно.

Столбец "Параметры" из Табл2 = "Параметр" из Табл2 ).
Например: Для объекта1 из Табл2 суммируются все параметры за 2021 год и данная сумма заносится в ячейку С3 Табл1 (2021 год).

Можно конечно из плоской Табл2 сделать сводную, а потом "впром" проставить значения в Табл2, но хочется попробовать макросом такое реализовать.
Cобрать данные из столбца в строку
 
Добрый день.
Подскажите как реализовать следующее:
Есть красивая таблица где каждый объект представлен одной строкой с и значениями разбитыми по годам.
И есть плоская таблица в 1-ом столбце повторяющиеся объекты , 2 столбец, например, года и 3 столбец - значения.
Как макросом реализовать заполнение 1 таблицы из второй?
Т.е. что-то вроде формирования сводной таблицы, но не на чистом листе.
Как преобразовать часть кода в подпрограмму с параметрами?
 
Казанский, то что хотелось, спасибо
Как преобразовать часть кода в подпрограмму с параметрами?
 
cellcop_2_... у меня задаются ячейки на листе со своим смещением.
Вот как раз значение смещения и хотелось передавать подпрограмме:
Код
Set cellcop_2_ = findT.Offset(, X)
Union(cellcop_2_, cellcop_2_.Offset(, Y), cellcop_2_2, cellcop_2_2.Offset(, Y)).Copy
....
Как преобразовать часть кода в подпрограмму с параметрами?
 
Добрый день.
Подскажите как правильно обратится к подпрограмме, и следовательно как задать в ней параметры?
Значит задачка: есть следующий код:
Код
Set findT = Worksheets(i).Range("B:D").Find("Текст", , xlValues, xlPart)
...
Set cellcop_2_ = findT.Offset(, 4)
Union(cellcop_2_, cellcop_2_.Offset(, 2), cellcop_2_2, cellcop_2_2.Offset(, 2)).Copy
Хочется вторую часть (с копированием ячеек) убрать в подпрограмму, которой нужно будет передавать параметры findT и параметры Offset
Run-time error '91 Object variable or With block variable not set, ошибка возникает только при повторном запуске макроса
 
Nordheim,прикладываю файл
Run-time error '91 Object variable or With block variable not set, ошибка возникает только при повторном запуске макроса
 
Добрый день.
Тоже борюсь с похожей ошибкой.
Есть код:
Код
Set findT = Worksheets(i).Range("E:H").Find("Полная нагрузка с потерями", , xlValues, xlPart)
    ' поиск количества вхождений
  If Not findT Is Nothing Then
    Adres = findT.Address
    Do
      cnt = cnt + 1
      Set findT = Worksheets(i).Range("E:H").FindNext(findT)
      Loop While Not findT Is Nothing And findT.Address <> Adres
  Else
    MsgBox "Не найдено на листе: " & Worksheets(i).Name
    Exit Sub
  End If

Если на нужном листе текст поиска встречается один раз, то на Loop While вылетает с этой ошибкой, если больше одного раза, то все норм.

Причем в других книгах все нормально срабатывало с любым кол-ом вхождений.
Изменено: venrt - 29.01.2019 12:10:29
Вставка строки снизу
 
Добрый день.
Подскажите как вставить строку снизу той на которой я сейчас нахожусь?
Например идет цикл по строкам и мне нужно вставить строку после строки i
Но при использовании Insert с разными атрибутами строка вставляется перед строкой i
Код
Rows(i).Insert (xlShiftDown)
Rows(i).Insert (xlShiftUp)

Изменить начало отсчета массива с 0 на 1
 
к #47
Цитата
RAN написал:
Split вообще работать не будет, ибо ему нужна переменная Variant
а разве не наоборот?

С кодом из #45 все работает действительно, если не задавать как массив изначально.
Спасибо.  
Изменить начало отсчета массива с 0 на 1
 
Ігор Гончаренко, ну ветка получилась достаточно полезная для меня, как минимум, ТС я так, что вопрос мой был задан вполне корректно.
Изменить начало отсчета массива с 0 на 1
 
JayBhagavan, ага, спасибо. Теперь буду знать. А Vba.Array в чем суть/отличия?
Изменить начало отсчета массива с 0 на 1
 
Про
Код
Option Base
было сразу написано, что не срабатывает.
Изменить начало отсчета массива с 0 на 1
 
БМВ, да так и сделал
Изменить начало отсчета массива с 0 на 1
 
Цитата
Nordheim написал:
Вот тут не совсем понял, какое это имеет значение?
Ну данная проблема можно сказать продолжение прошлой темы.
На переборе массива завязано подставление элементов в названия столбцов и также, что бы не плодить циклы формирования названия имен файлов, типа вот:
Код
For i = 0 To 3
For ii = 20 To 25 Step 5
        f = (i+1) * 100 + ii
        cFileName = f & ""
        With r
            Set rr = Union(.ListColumns(Clmn1).DataBodyRange, _
            .ListColumns(arrPzmx(i)).DataBodyRange, .ListColumns(arrQzmx(i)).DataBodyRange)
        End With
...
Копирование диапазона в несколько книг
 
Цитата
Nordheim написал:
посмотрел Ваш код и нашел грубейшую ошибку
Да, я понял уже эту ошибку.
Писал в #4, что закинул в тело цикла.
Потом по вашим замечаниям, вынес обратно и закрытие excel вынес за цикл перед окончанием процедуры.
Изменить начало отсчета массива с 0 на 1
 
Цитата
Nordheim написал:
Перебросьте циклом в другой массив созданный с 1. А чем помешал массив с 0 непонятно?
Дальше идет цикл по массиву с формулами и приходится прибавлять 1.
Думаю тогда уж лучше остановится на 0.
Изменить начало отсчета массива с 0 на 1
 
Создаю из строки через Split массив:
Код
Dim arrP() As String
P = "P20 P44 P64 P83"
arrP = Split(P)
Но мне нужно что бы элементы массива отсчитывались не от 0, а от 1.
option base - не срабатывает.
Пытаюсь переопределить командой
Код
ReDim Preserve arrP(1 To 4)
выпадает с ошибкой subscript out of range.
Если переопределить массив вначале, то после срабатывания Split , элементы опять начинаются с 0.
Копирование диапазона в несколько книг
 
Цитата
Nordheim написал:
Правильно, а потом идет к этому файлу обращение в строке 33
Понял, просто блок Else пока не срабатывал  
Копирование диапазона в несколько книг
 
Nordheim,
в блоке Else, закрывается открытый в 16,17 строке файл, что бы не мешался
Код
Set newwb = Workbooks.Add
Set newsh = newwb.Sheets(1)

Вынести закрытие файла уже после всех итераций... Спасибо!)
Копирование диапазона в несколько книг
 
Ігор Гончаренко, можете пояснить?

Nordheim,  это не влияет. Программу не обязательно завершать если данное условие не сработало.

Пока решил данную проблему вставив  
Код
Set newwb = Workbooks.Add
Set newsh = newwb.Sheets(1)
в тело цикла после условия
Копирование диапазона в несколько книг
 
Добрый день.
Есть книга с "Умной таблицей".
Мне нужно сохранить значения некоторых столбцов из таблицы в разные csv.
Потыкал гугл и форум, сделал такой макрос, для начала просто один и тот же диапазон в разных csv что бы сохранил:
Код
Sub test()

Dim f
Dim r As ListObject
Dim rr As Range, r1 As Range
Dim cFileName  As String
Dim wb As Workbook, newwb As Workbook, sh As Worksheet, newsh As Worksheet
Dim i As Long, j As Long
        
Application.ScreenUpdating = False
        
Set wb = ActiveWorkbook
Set sh = ActiveSheet
Set r = sh.ListObjects("Таблица1")
Set r1 = r.Range
Set newwb = Workbooks.Add
Set newsh = newwb.Sheets(1)
        
For i = 1 To 2
    f = i * 100 + 20
    cFileName = f & ""
    If sh.Range("M2").Value = "Зима" Then
 
        With r
            Set rr = Union(.ListColumns("sta").DataBodyRange, .ListColumns("P20").DataBodyRange, .ListColumns("Q20").DataBodyRange)
        End With
       
    Else
        newwb.Close savechanges:=False
        MsgBox ("Проверить наименование")
End If
    rr.Copy
    newsh.Cells(1, 1).Select
    ActiveSheet.Paste
    If InStr(1, cFileName, "\") = 0 Then cFileName = wb.Path & "\" & cFileName
             
    Application.DisplayAlerts = False
    newwb.SaveAs Filename:=(cFileName), FileFormat:=xlCSVWindows, CreateBackup:=False, local:=True
    Application.DisplayAlerts = True
    newwb.Close savechanges:=False
Next
End Sub
На первой итерации все норм, а на второй на строчке newsh.Cells(1, 1).Select, выдает ошибку run-time error '-2147221080 (800401a8)':  automation error

Подскажите что не так? Как правильнее сохранять разные значения из одной таблицы в разных файлах?
Прописание формулы с ссылкой на предыдущий лист
 
БМВ, Спасибо, а можете подсказать, как excel , понимает что =--(1&"январь") нужно распознавать как дату и переводить ее в числовое значение?
Изменено: venrt - 07.11.2018 09:38:10
Прописание формулы с ссылкой на предыдущий лист
 
Возможно похожее провернуть, т.е. получить ссылку на предыдущий лист если листы называются так: "январь", "февраль" и т.д.?
Данные по столбцам, Трансформация данных из столбцов
 
Спасибо, очень выручили.
Данные по столбцам, Трансформация данных из столбцов
 
Добрый день.
Подскажите возможно ли и как обработать таблицу автоматически, с помощью макроса, формул и т.п., что бы получилось следующее:
Например, есть таблица с двумя столбцами: в столбце А - фамилия, в B - имя. Фамилии повторяются. Нужно что бы в столбце А не было повторений фамилий, а в столбцах от B и дальше были все имена принадлежащие этой фамилии.  
Для наглядности прикрепляю файл.
Диапазон ячеек из xls в csv, макрос
 
Во
Спасибо!
Диапазон ячеек из xls в csv, макрос
 
Да, я знаю, что по умолчанию запятые, просто при импорте данных в дальнейшем в другую программу, там не так просто поменять на запятые.

Можно поподробней про параметр
Страницы: 1 2 След.
Наверх