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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2012, 19:46   #41
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Да в общем несложно переделать, позже дома гляну.
На сравнение овердрафтов это не влияет - код одинаковый. Но за сравнение ещё не брался, не думал над этим.
Но вот что будете делать с 21ФЕВ - Вы точно уверены, что это было в 2012 году?
Получилось преобразовать, как Вы рекомендовали ячейки с датами. Надо же хоть что-нибудь делать руками.
hammerman вне форума Ответить с цитированием
Старый 12.01.2012, 00:58   #42
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

К сожалению, из кода текст_по_столбцам не срабатывает и из макроса...
Вложения
Тип файла: rar Work5.rar (19.4 Кб, 8 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 12.01.2012, 05:17   #43
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
К сожалению, из кода текст_по_столбцам не срабатывает и из макроса...
Спс. Сегодня покатаю и script и макрос. Посмотрим как удобней.
Осталось решить вопрос со сравнением овера.
hammerman вне форума Ответить с цитированием
Старый 12.01.2012, 10:18   #44
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если сильно напрягает ручное преобразование дат, то конечно можно сделать это преобразование непосредственно перебором массива - пройтись циклом по массиву и каждое значение разложить на составляющие, проанализировать и собрать в дату. Те, где только день и месяц, думаю нужно так и оставить, или преобразовать в 21.02.1900
Макрос кстати можно запускать не кнопкой, а по событию workbook.open - будет почти как vbs.
Насчёт сравнения - мы имеем в конце кода (перед выгрузкой) два массива со всеми платежами и два массива с овердрафтами. Можно их сравнивать как угодно - можно сделать аналогично сравнению счёт/карта. Только мне как-то не ясно, что именно нужно получить - в файлах-примерах явно видно, что овердрафт в обоих файлах совпадает, можно эти суммы кодом сверить цикл в цикле: взяли первую сумму - если во втором массиве такая есть, то обе удалили, взяли следующую... В итоге оба массива будут пустые или с "дырами."
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 12.01.2012, 10:45   #45
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Если сильно напрягает ручное преобразование дат, то конечно можно сделать это преобразование непосредственно перебором массива - пройтись циклом по массиву и каждое значение разложить на составляющие, проанализировать и собрать в дату. Те, где только день и месяц, думаю нужно так и оставить, или преобразовать в 21.02.1900"
Это нисколько не напрягает. Думаю даже привлекает.
hammerman вне форума Ответить с цитированием
Старый 12.01.2012, 11:05   #46
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Насчёт сравнения - мы имеем в конце кода (перед выгрузкой) два массива со всеми платежами и два массива с овердрафтами. Можно их сравнивать как угодно - можно сделать аналогично сравнению счёт/карта. Только мне как-то не ясно, что именно нужно получить - в файлах-примерах явно видно, что овердрафт в обоих файлах совпадает, можно эти суммы кодом сверить цикл в цикле: взяли первую сумму - если во втором массиве такая есть, то обе удалили, взяли следующую... В итоге оба массива будут пустые или с "дырами."
Видно я неудачно выразил идею сравнения.
Прикладываю итоговую таблицу по сравнению, думаю так будет понятней.
Сравниваем по абсолютной величине данные из колонки E с листа "ОВЕРДРАФТ" с данными колонки F с листа "СЧЕТ - КАРТА" и данные из колонки N с листа "ОВЕРДРАФТ" с данными колонки F с листа "КАРТА - СЧЕТ". Берем первое равное значение (попробуем так. но могут быть случаи когда сравниваемых значений несколько пар получиться?).
Это даст возможность проанализировать была ли сумма процентов неразрешенного овердрафта возмещена клиенту по счету или карте.
Вложения
Тип файла: rar ИТОГИ ПОСЛЕ СРАВНЕНИЯ ОВЕРДРАФТА.rar (5.9 Кб, 7 просмотров)
hammerman вне форума Ответить с цитированием
Старый 12.01.2012, 12:10   #47
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

По сравнению овердрафтов проверьте такие дополнения - добавьте в код (скрипт или макрос, всё равно) блок проверки массивов с овердрафтами (перед Dim objExcel,ActivateExcel, With ...Workbooks.Add(1)) т.е. перед процессом выгрузки массивов на лист)

Код:
'================================сравнение овердрафтов===================
'Сравниваем по абсолютной величине данные из колонки E с листа "ОВЕРДРАФТ" с данными колонки F с листа "СЧЕТ - КАРТА"
'ovs - массив овердрафтов счёта
'scet - массив сделок счёта
    a = scet
    For i = 0 To ovs_x - 1
        For ii = 0 To scet_ii - 1
            If ovs(i, 3) = a(ii, 4) Then
                ovs(i, 3) = "совпало"
                a(ii, 4) = ""
		exit for
            End If
        Next
    Next

'и данные из колонки N с листа "ОВЕРДРАФТ" с данными колонки F с листа "КАРТА - СЧЕТ".
'ovc - массив овердрафтов карты
'carta - массив сделок по карте
    a = carta
    For i = 0 To ovc_x - 1
        For ii = 0 To carta_ii - 1
            If ovc(i, 2) = a(ii, 4) Then
                ovc(i, 2) = "совпало"
                a(ii, 4) = ""
		exit for
            End If
        Next
    Next

'========================================================================
Вместо надписи "совпало" можно вообще стирать данные строкИ - тогда выгрузка будет с пустыми строками или в данном примере пустая.
Или потом создать два массива, куда переложить только заполненные строки и выгружать уже их.
Или выгружать сразу на лист, но не весь массив, а перебором строк только заполненные строки поячеечно (что дольше).
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 12.01.2012, 13:49   #48
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
По сравнению овердрафтов проверьте такие дополнения ...
Дополнения вставил. Прогнал script и макрос. Результат немного не тот.
Суть всей сверки овердрафтных сумм состоит в том, чтобы понять была ли сумма процентов за неразрешенный овердрафт со знаком "-" возмещена клиенту пополнением со знаком "+". Поэтому я и предположил, что можно сделать сверку по абсолютной величине.
P.S. Надеюсь Вы с пониманием относитесь к данной задаче.
hammerman вне форума Ответить с цитированием
Старый 12.01.2012, 14:22   #49
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если нужно сравнивать по абсолютной величине (пропустил, не заметил), то тогда сравнивайте Abs(значение). Но тогда сперва нужно проверить эти значения на isnumeric(), иначе будет ошибка при преобразовании.

Код:
   For i = 0 To ovs_x - 1
        For ii = 0 To scet_ii - 1
            If IsNumeric(ovs(i, 3)) Then
                If IsNumeric(a(ii, 4)) Then
                    If Abs(ovs(i, 3)) = Abs(a(ii, 4)) Then
                        'MsgBox Abs(ovs(i, 3))
                        ovs(i, 3) = "совпало"
                        a(ii, 4) = ""
                        Exit For
                    End If
                End If
            End If
        Next
    Next
Или поставить перед циклами сравнения On Error Resume Next, чтоб на ошибках не выкидывало.
Ещё вариант - прибавить к одному другое. Если результат 0 - значит суммы компенсировались.

P.S. понимание минимальное
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 12.01.2012, 15:45   #50
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
P.S. понимание минимальное
Надеюсь этого минимума хватит до получения решения
hammerman вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание приложений для обработки массивов anastasiya__S Помощь студентам 0 07.04.2011 20:18
Макрос обработки данных для Excel 2007 Python Фриланс 1 16.02.2010 20:47
надо: макрос для обработки данных poll69 Microsoft Office Excel 2 06.02.2010 17:25
Сопоставление данных в двух таблицахъъъ Tanuki-sensei Microsoft Office Access 3 22.05.2009 09:25
Сопоставление данных в двух столбцах plasticman Microsoft Office Excel 4 12.03.2009 17:45