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

Страницы: 1
Собрать все данные с листов и создать общую спецификацию
 
Уважаемые Знатоки, добрый день.
Не получается решить следующую адачу:
Есть книга, в ней, на каждом листе спецификация материалов.
Необходимо собрать все данные с листов и создать общую спецификацию.
***
С помощью макроса уважаемого Дмитрия Щербакова "mConsolidated" выбрал все данные на один лист. Всё отлично. НО!
- Все данные размещены по вертикали.
А необходимо по горизонтали, как ПРИМЕР - на листе ЩКАФЫ.
Вот здесь и возникли трудности. С помощью Vlookup2 собрал значения по всем Типам. Проверил, и оказалось, что
количество строк в таблицах Тип 1 - Тип 10 по разделам не совпадает. Т.е. - в какой-то смете есть позиции, которых нет
в остальных (и наоборот). В примере - выделено жёлтым "Шкаф внутреннего монтажа АВВ на 120М (10x12)" отсутствует в Типах 1-Тип 7.
Только в типах 8-10. Эту строку я вставил вручную. И соответственно значения.
В остальных разделах ещё хуже. Есть одинаковые строки, но в нескольких допущены ошибки, и соответственно воспринимаются ВПРом как разные.
Или вообще, отсутствуют.
****
На мой взгляд, было бы не плохо организовать построчно сравнение по Тип1-Тип10 и вносить значения.
Сравнение делать по столбцам 2, 3, 4! Тогда, при ошибке в тексте, совпадёт следующее значение. И если хоть одно совпадает -
заносим в результирующий лист.
В случае отсутствия позиции - добавляем в результат дополнительной строкой со значениями, и продолжаем сравнение дальше.

Вроде как всё.
Пробовал организовать сравнение массивами, не получается сохранить массив в памяти (на каждом следующем листе от обновляется соответственно),
чтобы потом построчно сравнить.

Да, за основу Общего листа можно (и нужно) взять Спецификацию Тип 1 к примеру. Или самую многострочную Тип 5. А дальше - см. выше.
Изменено: PITBY - 03.12.2021 14:38:30 (Добавлено замечание.)
Сцепить в текст несколько числовых значений с их единицами измерений
 
Уважаемые Знатоки, помогите с помощью VBA сцепить значения из таблицы такого формата:
=ТЕКСТ(Лист2!B2;"# ##0,0")&"м.п.; "&ТЕКСТ(Лист2!B3;"# ##0,0")&"м.п.; "&ТЕКСТ(Лист2!B4;"# ##0,0")&"м.п.; "&ТЕКСТ(Лист2!B5;"# ##0,0")&"м.п. "
На листе Лист2 в столбце B есть определенные числовые значения. Их может быть одно и более для оной сцепки. (Сцепка 1 - четыре значения)
Сцепка 2 - два, Сцепка 3 - четыре. Плюс -  в каждой сцепки свои текстовые значения - м.п., шт., и т.д.
Т.е. - при вводе в столбец В значения и столбец С единицы измерения оно занеслось в строку С3. При добавлении этой связки (или по цвету шрифта, или по цвету заливки ячейки)(Или ещё по какому признаку!?) эти значения сцеплялись в одну строку через разделитель ;.
С Выше приведённой формулой НУ ОЧЕНЬ не удобно работать.
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 и Ведомость. Из КС построчно проверяются позиции, и при совпадении (по определённым условиям)
копируется объём и сумма, или при отсутствии такой позиции - записывается в последнюю строку Ведомости с объёмом и суммой.
И ВОТ ЗАСАДА - Никак не могу получить цикл, чтобы при совпадении записались только значения объёма и суммы, а не совпавшие записались в новую строку Ведомости.
Пробовал и удалять обработанные позиции в КС, и скрывать, и присваивать ИД, чтобы исключить из обработки - не помогло.
Запутался совсем.

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

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

Задача ещё осложняется тем, что в КС2 может быть много одинаковых значений, которые нужно сложить.
Изменено: pitby - 26.12.2018 15:01:44 (исправил ошибку)
Список файлов из папки в 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.11.2018 10:35:31
Отмена заливки ячеек цветом с нового года
 
Добрый день Форумчане!
Есть макрос, при работе которого, заливаются цветом прошедшие дни рождения.
Все работает, но...! возникла проблема - скоро закончится последний ДР, и с нового года необходимо очистить заливку ячеек,
и соответственно, начать заливку по-новой.
Что-то не лезет в голову, как реализовать.
Прошу помощи или варианты.
Склонение (день/дня/дней) из функции передать в форму, Как передать правильно из функции в форму
 
Добрый день знатоки!
Помогите с задачей:
На просторах форума нашёл и переделал "напоминалку", а так-же функцию склонения (день/дня/дней).
Но вот совместить их не получается.
Нужно, чтобы в строке:
Сообщение1 = "До дня Рождения осталось " & Разница & " дн."
вместо дн.  ставилось дня, дней и т.д., в зависимости от числа.

Заранее благодарю за помощь.
Цикл для строк и столбцов табеля по условию.
 
Добрый день.
Помогите пожалуйста, как правильно организовать цикл в данной ситуации:
Для Cells(5, x) понятно, а вот к Range("D8:AH11") не соображу.
Код
If Cells(5, 4) = 0 Then Range("D8:D11").Value = "8"  
If Cells(5, 5) = 0 Then Range("E8:E11").Value = "8"
If Cells(5, 6) = 0 Then Range("F8:F11").Value = "8"
If Cells(5, 7) = 0 Then Range("G8:G11").Value = "8"
If Cells(5, 8) = 0 Then Range("H8:H11").Value = "8"
If Cells(5, 9) = 0 Then Range("I8:I11").Value = "8"
If Cells(5, 10) = 0 Then Range("J8:J11").Value = "8"
If Cells(5, 11) = 0 Then Range("K8:K11").Value = "8"
If Cells(5, 12) = 0 Then Range("L8:L11").Value = "8"
If Cells(5, 13) = 0 Then Range("M8:M11").Value = "8"
If Cells(5, 14) = 0 Then Range("N8:N11").Value = "8"
If Cells(5, 15) = 0 Then Range("O8:O11").Value = "8"
If Cells(5, 16) = 0 Then Range("P8:P11").Value = "8"

Необходимо, при "0" в ячейке D5 и т.д., в нижних ячейках D8-D11 и т.д. вставить "8". При "1" - оставить без изменений.

VBA. Ошибка: Run-time error '1004':, При запуске книги в локальной сети - ошибка
 
Уважаемые Знатоки,
При запуске книги, размещённой на сервере в локальной сети выскакивает ошибка: Run-time error '1004'.

1. Первая ошибка
Private Sub UserForrc_Initialize()
Код
ThisWorkbook. Sheets("Форма").Select                               ' Эту строку проходит после того, как добавил ThisWorkbook
ThisWorkbook.Sheets("Форма").Range("A1:D42").Select                ' На этой строке выскакивает ниже описанное сообщение.
Run-time error '1004':
Метод Select из класса Worksheet завершен неверно

2. Вторая ошибка
Код
ThisWorkbook.Sheets("Лист!").Select                                        ' Эту строку проходит после того, как добавил ThisWorkbook
.Range(.Cells(i, 1), .Cells(i, 60)).Copy Cells (jLastrow + 1, 1)        ' На этой строке выскакивает ниже описанное сообщение.
If .Cells(i, 2) <> "" Then Cells(jLastrow + 1, 2) =.Cells (i, 2)
Run-time error '1004':
Method 'Cells' of object '_Global' failed

Самое интересное, что на локальной машине работает без проблем. Но как только книгу копирую на серверный диск и запускаю - лезут эти ошибки изо всех мест где не стоит ThisWorkbook или присутствует Select или Cells или Range.
Именно там, где происходит объявление книг, листов или диапазонов. Или после объявления.
В интернете много просмотрел, но так к единому знаменателю и не пришёл. В том числе и на форуме.
Может уже было готовое решение?
Что-то связано с сетью. Но что, не пойму.
VBA. Суммирование значений в другую книгу, суммирование по нескольким условиям
 
Добрый вечер знатоки.
Обращаюсь за помощью, так как остановился на конечном этапе.
А именно-выгрузка значений из таблицы в виде суммы на лист в другую книгу.
Пример прилагаю.
Основной файл "Меню КОМПЛЕКС"
Файл для загрузки значений Меню ***, Лист КОМПЛЕКС 180
В нём я вручную проставил данные для примера, что бы было понятно.
С уважением.
Изменено: pitby - 29.05.2016 22:48:01
Разделить текст из TextBox в две ячейки
 
Помогите разделить текст  из TextBox в две ячейки.
В ячейку В1 нужен текст до переноса строки, а B2 после.
Разделителей нет.
VBA. Сгруппировать OptinButton в зависимости от значения
 
Уважаемые Знатоки, прошу помощи.
В форме заполняются TextBox-ы. При заполненных Tb возможен выбор Ob нужного, с последующей передачей  значения в ячейки на лист.
Со Вторым не могу разобраться. В примере вкратце описал, но если необходимо будет. уточню.
Изменено: pitby - 10.04.2016 23:21:47
Переменная из одной формы в другую, Не получается!
 
Уважаемые Знатоки, помогите!
Перебрал множество примеров, вроде всё правильно, а глобальная переменная в форме 1 не видна.
Понимаю, что что-то не так, но несколько дней не дали результат. В Форме2 она объявляется, а в Форме1 её нет.
И попутный вопрос- Возможно ли в ListView1 сделать выбор по Enter или двойным кликом мыши?
Сбор данных в таблицу по формату DBF, Помогите свести данные из таблицы Excel в таблицу формата DBF
 
1. Есть таблица с   данными КОМПЛЕКС 180, периодически меняющимися
2. Хочу создать таблицу в формате DBF   "ТАБЛИЦА"
3. Пробовал прямыми сылками, и с помощью   ВПР
3. Но вся проблема в том, что данные   меняются каждый день, так и каждую неделю (кол-во строк)
т.е. может быть в какой-то день 2 салата,   но 6 первых блюд, и с гарниром и без не подряд, а с пропуском.
Вот здесь всё и идет на смарку.
4. Дату я преобразовал с помощью GetDate,   но вот при смещении строк и она соответственно пропадает.
Страницы: 1
Наверх