Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 След.
Копирование данных с листа по условию
 
Цитата
.Range(.Cells(2, "D"), .Cells(LastRow + 1, "D")).ClearContents
Денис Ш.
И где эта строка в Вашем примере?
Закоментирована?
Изменено: PITBY - 17 Окт 2019 12:04:25
Условное форматирование строки на основании значения ячейки
 
Условное форматирование. Выше с примером опередили.
Изменено: PITBY - 18 Сен 2019 10:52:45
Запятая автоматически преобразуется в тире
 
Скорее всего это шутка чья то.
Ещё может быть в Punto Switcher (если установлен!). Там тоже возможна автозамена.
Работа макроса на другом листе
 
Цитата
Yum написал: xlsm заливаю)
1. Макросов не обнаружено
2. "Факт 2017 в формате 2018" из формулы в С4 - листов с таким именем не существует, соответственно - ошибка.
Скопировать данные строк из листа (листов) по условию в другой лист
 
Цитата
pitby написал:
Заранее благодарю за оказанную поддержку и помощь.
Решение достигнуто в этой теме. Тема закрыта.
Изменено: pitby - 31 Янв 2019 20:33:52 (Ошибочно дал ссылку, не проверив. Исправил.)
VBA. Занести данные в словарь со смещением строки
 
Цитата
Sanja написал:
А это как же!? 1 Set DC = CreateObject("Scripting.Dictionary")
Да, прошу прощения, в торопях и не осознал, что словарь присутствует.
Цитата
Anchoret написал:
Вот еще вариант:
Спасибо огромное ещё раз.
Немного разобрался с вашим кодом, прикрутил под себя, и получилось ТО, ЧТО НУЖНО!
Работает на много быстрее, чем мой приведённый код. И главное - правильно!


Спасибо всем. Тема закрыта.
VBA. Занести данные в словарь со смещением строки
 
Цитата
Sanja написал:
А это как же!?
В самом начале я писал, что код с массивами у меня почти готов, только суммирование подкачало (спасибо Anchoret, вроде получилось. Проверить пока не могу)
А далее, я попробовал на словарях. Получилось, но без суммы по столбцу 11 в строке "Всего по позиции.".
Вот и поднял вопрос.
VBA. Занести данные в словарь со смещением строки
 
Цитата
Sanja написал:
Как Вы планируете ориентироваться в МАССИВЕ по жирному тексту в ЯЧЕЙКЕ?
Пока делал таким кодом:
Код
1. For i = 1 To iLastRow
2.    If Cells(i, 11).Font.Bold = True Then
3.        job.Cells(J, 11).Value = s2 ' s2 = ' "Всего по позиции:" - записываем сумму в строку с кодом пасценки
4.        job.Cells(j, 11).Font.Bold = True
5.    End If
6.  Next

и

 For i2 = i + 1 To UBound(myArray)
            If myArray(i2, 1) Like "*Всего по позиции*" Then
                t2 = i2
                Application.Transpose (myArray)
Изменено: pitby - 29 Янв 2019 21:22:08
VBA. Занести данные в словарь со смещением строки
 
Цитата
Anchoret написал:
Вот еще вариант:
Спасибо огромное! Пока Ваш вариант, вроде, выполняет свои функции. (Проверю на более большей базе)
Вот только это вариант с массивами, а со словарём пока не видно. А может и не нужно?
Ещё раз СПАСИБО!
VBA. Занести данные в словарь со смещением строки
 
Цитата
Sanja написал:
iArr(2) = M(I + 6, 11)
Не подходит это выражение. Так как строк может быть больше, меньше, или вообще не быть после строки с кодом, наименованием, кол-ком и объёмом.
Всегда есть только строка "Всего по позиции" (В некоторых актах и их нет, только сумма жирным выделена.
Так, что привязываться нужно только к строке с "Всего по позиции"
А за код спасибо, разберу его конечно-же пристально.
VBA. Занести данные в словарь со смещением строки
 
Цитата
Sanja написал:
в шифре 3.20-11-15, отсутствует объем
Строка 73 F - значение "3"
VBA. Занести данные в словарь со смещением строки
 
Цитата
magistor8 написал:
ЗП, ЭМ, в т.ч. ЗПМ, МР.
Эти значения вообще не нужны. Их бы удалить, да в разных позициях они в разных вариациях бывают. Собственно, они не мешают. Отфильтровываются и не попадают в словарь, кроме строки 2 в Лист2. Берется почему-то.
VBA. Занести данные в словарь со смещением строки
 
Цитата
magistor8 написал:
Дальше крутим вертим массив как хотим.
С массивом у меня есть рабочий пример. Там только суммирование не получается одинаковых позиций. Пока.
А обратился к словарю, так как увидел, что суммирование просто выполнить. Если в одной строке с ключом.!
Как кол-во в столбце 6.
А вопрос в том, чтобы вытянуть сумму из строки "Всего по позиции" соответствующей коду.
VBA. Занести данные в словарь со смещением строки
 
Цитата
Sanja написал:
Почему именно ЭТО наименование, а не, например '...(ф100 мм)' или '...(ф160 мм)
Потому, что все позиции отслеживаются по коду 3.20-1-1 в данном случае. Их много. и нужно не конкретное точное название, а общее количество и сумма.
Что и вносится в Лист2. А название первое. Оно в оригинале и короче может быть.
С остальными позициями то-же самое.
Цитата
Sanja написал:
Вы понимаете что такое Словарь?
С недавнего времени пытаюсь изучить. Перечитал немного литературы. Вникаю.
Изменено: pitby - 29 Янв 2019 17:21:21
VBA. Занести данные в словарь со смещением строки
 
Цитата
Sanja написал:
Покажите в файле-примере желаемый результат
В примере, на Лист2 указано, что при совпадении кодов из столбца 3 Лист1, взять суммы из K11 сложив. (Из строки с "Всего по позиции" данного кода.
Если нет совпадения -  просто суммы из K11.
Макрос в модуле рабочий, но вот как вытянуть суммы с ключом из Dict1 - не понимаю.
Изменено: pitby - 29 Янв 2019 16:55:49
VBA. Занести данные в словарь со смещением строки
 
Добрый вечер.
Помогите пожалуйста со словарём.
Как внести данные в Items (Dict4), которые находятся в смещённых ячейках, относительно Keys (Dict1).

Код
Sub Сложить() 'начало процедуры
'объявление переменных
Dim M()              'массив. для ускорения обработки
Dim Dict1 As Object  'словарь. для облегчения поиска уникальных
Dim Dict2 As Object  'словарь. для облегчения поиска уникальных
Dim Dict3 As Object  'словарь. для облегчения поиска уникальных
Dim Dict4 As Object  'словарь. для облегчения поиска уникальных
Dim LR               'последняя занятая строка

Лист1.Select         'перейти на лист
LR = Лист1.Cells(Rows.Count, 3).End(xlUp).Row      'узнать количество строк
M = Лист1.Range(Cells(33, 1), Cells(LR, 11)).Value 'загнать таблицу в массив
Set Dict1 = CreateObject("Scripting.Dictionary")   'объявить словарь1
Set Dict2 = CreateObject("Scripting.Dictionary")   'объявить словарь2
Set Dict3 = CreateObject("Scripting.Dictionary")   'объявить словарь3
Set Dict4 = CreateObject("Scripting.Dictionary")   'объявить словарь4


     For i = 1 To UBound(M)                                     'по всему массиву
        If Dict1.Exists(M(i, 3)) Then                           'если в словаре уже имеется Шифр расценки и код
            Dict1.Item(M(i, 3)) = Dict1.Item(M(i, 3)) + M(i, 6) 'суммировать объём
        Else                                                    'иначе
            Dict1.Add M(i, 3), M(i, 6)  'добавить Шифр расценки и код в первый словарь
            Dict2.Add M(i, 3), M(i, 5)  'добавить Ед. изм. во второй словарь
            Dict3.Add M(i, 3), M(i, 4)  'добавить Наименование работ и затрат в третий словарь словарь
'            Dict4.Add M(i, 3), M(i, 11) 'добавить ВСЕГО затрат в четвёртый словарь
' Вместо M(i, 11) должна быть сумма из (x, 11)! в строке "Всего по позиции:"
        End If 'выход из условия
     Next i    'следующая строка
      
' MsgBox Dict1.Items()(0) ' просмотреть первый items
Лист2.Select 'перейти на лист 2
Лист2.Cells.ClearContents 'очистить лист
Лист2.Range("A1").Resize(Dict1.Count) = Application.Transpose(Dict1.Keys)  'выгрузить Шифр расценки и код
Лист2.Range("B1").Resize(Dict1.Count) = Application.Transpose(Dict2.Items) 'выгрузить Ед. изм.
Лист2.Range("C1").Resize(Dict1.Count) = Application.Transpose(Dict3.Items) 'выгрузить Наименование работ и затрат
Лист2.Range("D1").Resize(Dict1.Count) = Application.Transpose(Dict1.Items) 'выгрузить сумму объёмов работ
'Лист2.Range("E1").Resize(Dict1.Count) = Application.Transpose(Dict4.Items) 'выгрузить сумму ВСЕГО затрат

End Sub 'конец процедуры
Скопировать данные строк из листа (листов) по условию в другой лист
 
Добрый день Знатоки.
В этой теме я поднимал вопрос о построчном сравнении данных на листах и копировании по условию.
Ответ (помощь) так и не получил, пришлось плотнее садиться за поиск похожих тем на форуме.
Из всего разнообразия примеров выбрал себе несколько подходящих, и на их основе получилась программа.
НО! Всё таки не добился желаемого результата. "Зациклился" так, что опять обращаюсь за помощью.

Суть: Есть КС-2 и Ведомость. Из КС построчно проверяются позиции, и при совпадении (по определённым условиям)
копируется объём и сумма, или при отсутствии такой позиции - записывается в последнюю строку Ведомости с объёмом и суммой.
И ВОТ ЗАСАДА - Никак не могу получить цикл, чтобы при совпадении записались только значения объёма и суммы, а не совпавшие записались в новую строку Ведомости.
Пробовал и удалять обработанные позиции в КС, и скрывать, и присваивать ИД, чтобы исключить из обработки - не помогло.
Запутался совсем.

Заранее благодарю за оказанную поддержку и помощь.
Удаление строк со значением нумерации
 
magistor8, Огромное спасибо!
То, что нужно!
Удаление строк со значением нумерации
 
Спасибо, но мне нужно кодом в VBA.
(Так как ещё проверять суммы нужно)
Удаление строк со значением нумерации
 
Добрый день Знатоки.
Подскажите, как удалить строки со значением в номере строки "1,1"; "1,2" и т.д.
оставляя только строки с целыми числами.
Удалять нужно до строки "Всего по позиции"
Скопировать данные строк из книги (книг) по условию в другую книгу по условию, Скопировать данные строк из книги (книг) по условию в другую книгу по условию
 
Ни каких идей?
Или не правильно сформулировал свой вопрос?
Скопировать данные строк из книги (книг) по условию в другую книгу по условию, Скопировать данные строк из книги (книг) по условию в другую книгу по условию
 
Добрый день Знатоки.
Очередной раз обращаюсь за помощью на Планету.
Суть вопроса:
Есть книга КС6а и книга с данными КС2 (или несколько)
Необходимо из КС2 построчно сравнить данные по определённым условиям с КС6а и при совпадении - скопировать только определённые значения, со сложением значений при их множестве, и при не совпадении - добавить строки в КС6а и скопировать значения.
Проделанная работа не дала нужного результата, а поставила в тупик.
1. Пробовал средствами ВПР (VLOOKUPS и прочее) - данные находит, но вот складывать их не может, и добавлять строки тем более
2. Опробовал несколько вариантов средствами VBA из примеров, то-же, ничего не получилось.

Прошу помочь в решении данной задачи или описать необходимый алгоритм работы.
В файле примера есть лист с заданием, где полнее описано, что есть и что необходимо.

Задача ещё осложняется тем, что в КС2 может быть много одинаковых значений, которые нужно сложить.
Изменено: pitby - 26 Дек 2018 15:01:44 (исправил ошибку)
Автоматически поставить пароль по наступлению даты
 
Цитата
Artem1977 написал:
...Создал новую книгу, вставил код, сохранил - открыл...Всё работает
Подтверждаю!
Изменено: pitby - 7 Дек 2018 13:29:31
Макрос для суммирование значений в разных бланках
 
Цитата
Nordheim написал:
как я показал в предыдущем сообщении.
Спасибо, буду разбираться.
Макрос для суммирование значений в разных бланках
 
Цитата
Nordheim написал:
sht.Range("a" & lrow).Resize(k,6) = arr
Nordheim, подскажите, как записать это выражение для копирования определённых столбцов?
Например, с 1 по 6, 9, 10, 12-18 и т.д?
Макрос для суммирование значений в разных бланках
 
Скорее всего, в остальных колонках есть информация, не нужная для копирования.
Макрос для суммирование значений в разных бланках
 
Цитата
durango77 написал:
Осталось только отрезать 6 колонок
Попробуйте так:
Перед End Sub dcnfdmnt:    
Код
cDel = sht.UsedRange.Columns.Count          ' подсчитаем не пустые колонки
  If cDel > 4 Then ActiveSheet.Columns("e:aa").Delete

Где "e:aa" - колонки, начиная с 4-й, которые удаляем  
Изменено: pitby - 5 Дек 2018 18:00:59
Список файлов из папки в MsgBox, Как вывести в MsgBox список файлов?
 
Цитата
SAS888 написал:
Еще вариант:
Спасибо! Интересный вариант.
Проверил - ОЧЕНЬ ХОРОШО!!!
Изменено: pitby - 29 Ноя 2018 15:53:24
Список файлов из папки в MsgBox, Как вывести в MsgBox список файлов?
 
Цитата
Апострофф написал:
примерно так -
Супер!
Спасибо, то, что нужно!
Список файлов из папки в MsgBox, Как вывести в MsgBox список файлов?
 
Добрый день Знатоки.
Помогите пожалуйста:
- есть код уважаемого Дмитрия Щербакова, где список файлов выводится на Лист.
Код
'---------------------------------------------------------------------------------------
' Module    : mGetAllFilefromFolder
' DateTime  : 20.07.2012 13:56
' Author    : The_Prist(Щербаков Дмитрий)
'             WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
'             http://www.excel-vba.ru
' Purpose   : http://www.excel-vba.ru/chto-umeet-excel/prosmotret-vse-fajly-v-papke/
'---------------------------------------------------------------------------------------
Option Explicit


Dim vFolders(), lCount As Long
Dim objFSO As Object, objFolder As Object, objFile As Object
Sub Get_All_File_from_Folder()
    Dim sFolder As String, sFiles As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    Application.ScreenUpdating = False
    sFiles = Dir(sFolder & "*.xls*")
    Do While sFiles <> ""
        'заносим полное имя файла в список файлов
        ReDim Preserve vFolders(lCount)
        vFolders(lCount) = sFolder & sFiles
        lCount = lCount + 1
        '================================
        'Открытие книг:
'        'открываем книгу
'        Workbooks.Open sFolder & sFiles
'        'действия с файлом
'        'Запишем на первый лист книги в ячейку А1 - www.excel-vba.ru
'        ActiveWorkbook.Sheets(1).Range("A1").Value = "www.excel-vba.ru"
'        ActiveWorkbook.Close True
        sFiles = Dir
    MsgBox sFiles    ' Как вывести весь список ???
    
    Loop
'    Range("A1").Resize(lCount).Value = Application.Transpose(vFolders)
    Application.ScreenUpdating = True
End Sub


Вопрос: Как вывести этот список в MsgBox?
Изменено: pitby - 29 Ноя 2018 10:35:31
Страницы: 1 2 3 4 След.
Наверх