Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.09.2013, 19:02   #21
Lemon Tree
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 15
По умолчанию

не,не, в поле ROOM заменой ставлю пустоту, потом уже на конечном этапе проставляются номера комнат вручную в нужных адресах. Меня больше волнует отсутствие квартир в одном из файлов.
Если Вы всё понимаете, значит Вам не обо всём говорят
Lemon Tree вне форума
Старый 12.09.2013, 20:12   #22
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Отсутствие не влияет - ну нет и нет...
Принцип работы ведь такой - сперва собираем всю существующую информацию из файла, затем раскладываем в сводный файл.
Если на кого-то данных не собрали - значит не собрали.
Если в сводном кого-то нет - значит это осталось невостребованным. Ошибок не будет.
Вот другое дело если нужно узнать, кто остался без пары - это можно доработать.
1. когда выгружаем, ставим в эту строку метку. Я бы завёл на это дело отдельный массив, куда ставил метки, в конце выгружал на лист. Чуть правее. через пустой столбец. Даже например писал туда дату.
Можно в начале кода считать этот массив с листа, дописать свежие метки, выгрузить назад - так всегда будете видеть когда кто обновился.
2. Когда выгружаем запись из словаря, можно её сразу удалить из словаря. Тогда в конце циклом по словарю можно определить оставшихся - значит таких нет в сводном, нужно что-то делать. Что/как именно - пока не вижу, нужно прорабатывать... Например одним проходом пополнить сводный (используя другой словарь для отсеивания дублей), затем по этому добавленному диапазону аналогично как в начале раскидать остатки словаря.
Но тут нужно обеспечить, чтоб виды платежей все уже были в сводном. Если возможны неожиданности - тут тоже придётся подработать...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума
Старый 18.09.2013, 13:56   #23
Lemon Tree
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 15
По умолчанию

спасибо ещё раз ) помогите,плиз,в этом,в прошлый раз не удалось справиться,слегка переделала задачу.
в одной книге 2 листа - лист1 - полный файл по всем управляющим компаниям, но по некоторым (я бы сказала,многим) адресам услуга "Содержание и ремонт" равна нулю, Лист2 - файл с услугой "Содержание и ремонт",содержащей цифры. Наименование адресов совпадает (город,улица,дом,корпус,квартира), а сами адреса на листах совпадают не полностью,а местами,т.е.,на листе2 их может не быть,т.к.,файл от мелкого ТСЖ с домами,которые обслуживает это конкретное ТСЖ.
Структура на обоих листах одинакова.Столбцы от A до E идентичны.
Задача - Сравнить адреса на листах и при полном совпадении адресов на листах, данные по столбцу М (лист2) скопировать в столбец М (лист1). После копирования необходимо суммировать столбцы - J (лист2) с J (лист1), К (лист2) с К (лист1), L(лист2) с L (лист1) и поставить это всё в Лист1 в графы J,K,L соответственно.
Написала много,понятно ли только7 И выполнима ли моя задача?
Вложения
Тип файла: rar Комм.rar (12.3 Кб, 5 просмотров)
Если Вы всё понимаете, значит Вам не обо всём говорят
Lemon Tree вне форума
Старый 18.09.2013, 14:20   #24
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Минимально подправил код с предыдущей страницы.
Проверяйте.

Код:
Option Explicit

Sub sborka()
    Dim a(), i&, ii&, tAdr$, t$

    With CreateObject("Scripting.Dictionary")
        .comparemode = 1
        a = ThisWorkbook.Sheets(2).[a1].CurrentRegion.Value
        For i = 2 To UBound(a)
            tAdr = a(i, 1) & "|" & a(i, 2) & "|" & a(i, 3) & "|" & a(i, 4) & "|" & a(i, 5) & "|" & a(i, 6)
            For ii = 10 To 13    'UBound(a, 2)
                t = tAdr & "|" & a(1, ii)
                .Item(t) = .Item(t) + a(i, ii)
            Next
        Next

        a = ThisWorkbook.Sheets(1).[a1].CurrentRegion.Value
        For i = 2 To UBound(a)
            tAdr = a(i, 1) & "|" & a(i, 2) & "|" & a(i, 3) & "|" & a(i, 4) & "|" & a(i, 5) & "|" & a(i, 6)
            For ii = 10 To 12    'UBound(a, 2)
                t = tAdr & "|" & a(1, ii)
                a(i, ii) = a(i, ii) + .Item(t)
            Next
            t = tAdr & "|" & a(1, 13): If .exists(t) Then a(i, 13) = .Item(t)

        Next

        With ThisWorkbook.Sheets(1)
            .Columns(7).NumberFormat = "@"    'это думаю косяк примера, но лишним не будет :)
            .[a1].CurrentRegion.Value = a
        End With
    End With

    MsgBox "Данные собраны!"
End Sub
Хотя в данном случае можно было сделать иначе, проще - и работало бы быстрее. но лень - есть ведь уже готовое более универсальное решение.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума
Старый 18.09.2013, 14:57   #25
Lemon Tree
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 15
По умолчанию

огроменное спасибо!!!!! всё работает и достаточно быстро на файле в 5 тыс строк, всего пару-тройку секунд. ))))
Если Вы всё понимаете, значит Вам не обо всём говорят
Lemon Tree вне форума
Старый 18.09.2013, 16:17   #26
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Здесь остался тот же подход что и раньше - каждая ячейка в J,K,L запоминается, ищется и заполняется индивидуально.
Это было нужно когда столбцы могли "бегать и пропадать".
А т.к. тут обе таблицы одинаковы - можно было запоминать только номер строки каждого адреса (а не как сейчас к адресу+шапка запоминается значение), копировать/суммировать сразу строку целиком.
И было бы на пару секунд быстрее
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума
Старый 18.09.2013, 16:34   #27
Lemon Tree
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 15
По умолчанию

пара секунд мне погоды не сделают,займусь другими файлами ибо их куча по другим услугам, конечно, хотелось бы автоматизировать вообще весь процесс,но,думаю,нереально это будет
многое приходится делать руками,к сожалению
Если Вы всё понимаете, значит Вам не обо всём говорят
Lemon Tree вне форума
Старый 18.09.2013, 16:39   #28
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Почти всё нудное можно автоматизировать. Даже вероятно всё - но вопрос в целесообразности/стоимости автоматизации. Бывают такие мудрёные файлы/таблицы от кудесников...
Ну а эти просто требуют автоматизации
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума
Старый 18.09.2013, 19:54   #29
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Lemon Tree Посмотреть сообщение
Здравствуйте! помогите,плиз,полному профану в программировании.
Цитата:
Сообщение от Hugo121 Посмотреть сообщение
можно параллельно собрать два словаря или коллекции с адресами и услугами, выгрузить их на лист как шапки сбоку/сверху, затем заполнить "шахматку" собранным в словаре.
Цитата:
Сообщение от EducatedFool Посмотреть сообщение

хорошие инструкции, Игорь...
я вообще не понимаю, зачем (для кого) он это пишет. Все ясно из первого предложения ТС: либо писать код "за спасибо" (иногда и без него), либо ТС - добро пожаловать во фриланс
Тишина – самый громкий звук
nerv вне форума
Старый 18.09.2013, 20:13   #30
Lemon Tree
Пользователь
 
Регистрация: 11.09.2013
Сообщений: 15
По умолчанию

согласна,требуют,чтобы все было сделано макросом и наверняка это можно сделать- например,надо сменить букву корпуса с заглавной на строчную ("А" на "а","Б" на "б" и т.д.),проставить косую в корпус с цифрой (12 на /12 и т.д.), затем сцепить номер дома с корпусом и поместить в ячейку с номером дома. Сейчас делаю через замену.

p.s. это осилила сама,благодаря Вам спасибо
Если Вы всё понимаете, значит Вам не обо всём говорят

Последний раз редактировалось Lemon Tree; 18.09.2013 в 21:19.
Lemon Tree вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слияние тхт файлов recycler Visual C++ 0 04.06.2012 19:57
Pascal слияние файлов death65 Помощь студентам 3 12.12.2010 15:41
Слияние файлов pasha26 Microsoft Office Excel 4 23.12.2009 08:15
Слияние двух файлов в один hen Общие вопросы C/C++ 1 07.10.2009 22:59
Слияние двух текстовых файлов nataly_ukr Общие вопросы Delphi 5 26.12.2007 16:45