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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2014, 11:32   #21
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от alex77755 Посмотреть сообщение
Код:
Print #2, T1, T2
Печатать в файл открытый под номером 2 (As 2)
Две переменных Т1 и Т2
А-а понял, потихоньку разбираюсь.
Он и недолжен выводить две колонки из testk.txt, только первую?

Я думал, что Т1 - первая колонка, а Т2 - вторая,
а оказалось, что Т1 - первое значение первой колонки, а Т2 второе, той же, первой, колонки ...
valerij вне форума Ответить с цитированием
Старый 01.11.2014, 15:21   #22
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

жизнь на с учит что
на самомом деле все бывает совсем не так, как в действительности!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.11.2014, 12:44   #23
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от alex77755 Посмотреть сообщение
Если с начала мне было хоть не много понятно, то теперь я совсем потерял суть задачи.
alex77755!!
Не правильно работает qwerty() под мою задачу, вот ещё раз на примере поясню.

Скрин.
Как видите в тотале тёмным - несовпадающие данные, V202 и V210
Важна только колонка В-В -правая
1. В ней - В-В, нужно удалить совпавшие данные, оставить разницу - тёмные выделения.
2. Эту разницу сравниваю с другими данными и удаляю не совпавшие данные.
1п - сравнивается и удаляется по строкам

Второй пункт прекрасно справляется макросом
Код:
Sub QWERT()
Dim oD: Set oD = CreateObject("Scripting.Dictionary")
Dim oE: Set oE = CreateObject("Scripting.Dictionary")
Dim M(), LR, R, D, U(), LR2
With Лист1
    LR = .Cells(.Rows.Count, 1).End(xlUp).Row
    M = .Range("A1:C" & LR) 'грузим в массив
    
    For R = 1 To LR ' берём в словарь столбец А
'       oD(M(R, 1)) = R ' в таком случае метка будет на последнем из дублей
       If Not oD.Exists(M(R, 1)) Then oD(M(R, 1)) = R   ' в таком случае метка будет на первом из дублей
    Next R
'    для расстановки меток по всем дублям надо добавить небольшой блок

    LR2 = .Cells(.Rows.Count, 2).End(xlUp).Row
    For R = 1 To LR2 'идем по второму столбцу
       If oD.Exists(M(R, 2)) Then ' если есть в словаре
            oE(M(R, 2)) = R 'Добавляем в словарь совпавших что бы были по порядку
            M(oD(M(R, 2)), 3) = 0 ' ставим метку
       End If
       M(R, 2) = "" ' удаляем из колонки В
    Next R
    
  .Range("A1:C" & LR) = M ' Выгружаем массив на лист
  
' осталось показать совпавшие. Они в словаре. Можно былобы воспользоваться Transpose
'Но у него ряд ограничений. Так что массивом опять
  U = oE.keys 'словарь  в промежуточный массив
  ReDim M(UBound(U), 1 To 1)
  For R = 0 To UBound(U)
    M(R, 1) = U(R)
  Next R
.Range("B1").Resize(UBound(U) + 1) = M
End With
End Sub
А что тут нужно поменять для первого пункта?

Спасибо.
Изображения
Тип файла: jpg 22.jpg (96.0 Кб, 145 просмотров)

Последний раз редактировалось valerij; 03.11.2014 в 11:05.
valerij вне форума Ответить с цитированием
Старый 02.11.2014, 17:00   #24
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

alex77755!!
Докладаю!!!
Переделал как сумел!!
удаляю совпавшие, остаются разница - п1
Код:
Sub dell()
Dim oD: Set oD = CreateObject("Scripting.Dictionary")
Dim oE: Set oE = CreateObject("Scripting.Dictionary")
Dim M(), LR, R, D, U()
With Лист1
    LR = .Cells(.Rows.Count, 1).End(xlUp).Row
    M = .Range("A1:C" & LR) 'грузим в массив
    
    For R = 1 To LR ' берём в словарь столбец А
       oD(M(R, 1)) = R
    Next R
    
    For R = 1 To LR 'идем по второму столбцу
       If oD.Exists(M(R, 2)) Then ' если есть в словаре
        M(R, 2) = "" ' удаляем из колонки В
        M(R, 3) = 0 ' ставим метку
        Else
            'oE(M(R, 2)) = R 'Добавляем в словарь совпавших что бы были по порядку
            'M(R, 3) = 0 ' ставим метку
       End If
       'M(R, 2) = "" ' удаляем из колонки В
    Next R
    
  .Range("A1:C" & LR) = M ' Выгружаем массив на лист
  
' осталось показать совпавшие. Они в словаре. Можно былобы воспользоваться Transpose
'Но у него ряд ограничений. Так что массивом опять
'  U = oE.keys 'словарь  в промежуточный массив
'  ReDim M(UBound(U), 1 To 1)
'  For R = 0 To UBound(U)
'    M(R, 1) = U(R)
'  Next R
'.Range("B1").Resize(UBound(U) + 1) = M
End With
End Sub
Получил в В-В с многими пустыми строками, но есть макрос удаляющие пробелы + макрос делящий по 16 символ в строке, выполнил всё - получил ИТОГ для сравнения с последней прошивкой.
Выполнил - конечно ещё досконально не проверил, но радует, что стал находить данные которые есть в любой прошивке - таблицы зон экспонирования и значение выдержек эл. затвора.
Фух!!!

alex77755!!
Вот теперь другое дело, окончательный файл .bin = 890 кб, теперь мона править, удалить ещё кучу не нужных, не влияющих.....

З. Ы.
Если есть машина - обязательно купите видеорегистратор, только примите от меня совет....
Спасибо.

Последний раз редактировалось valerij; 03.11.2014 в 11:59.
valerij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить два ассоциативных массива и вывести одинаковые значения. livesport PHP 1 20.10.2012 15:10
Выдать кол-во суммируемых элементов,сравнить значения(Pascal) reprain Помощь студентам 0 07.10.2012 21:51
Выдать кол-во суммируемых элементов,сравнить значения(Pascal) reprain Помощь студентам 14 07.10.2012 20:59
поиск hex значения в бинарном файле (большого объема) witia03 Общие вопросы Delphi 10 23.05.2012 20:25
ADoQuery inputbox сравнить значения detalik Помощь студентам 2 18.05.2011 08:31