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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 19:11   #1
lemonplasticine
 
Регистрация: 07.12.2011
Сообщений: 6
По умолчанию Попарное сравнение данных в столбцах в массиве

Добрый день, уважаемые гуру экселя! обращаюсь за помощью! которую неделю ломаю голову над следующей задачей.

имеется массив данных - данные по производству 1143 товаров регионами страны. нужно найти значения, которые бы соответствовали числу регионов, производящих каждую пару товаров. производство зашифровано дамми - 1-товар производится, 0 - не производится. Т.е., сколько регионов одновременно производит товар1 и товар2, товар 1 и товар 3, товар 2 и товар3 и т.д. Всего получается, кажется, (n*(n-1))/2 комбинаций.
прилагаю файл.

в экселе я новичок, но буду терпеливо разбираться со всем, что напишете!
огромное спасибо! горит дипломная работа, не знаю, что и делать ((((((
Вложения
Тип файла: rar образец1989.rar (182.7 Кб, 19 просмотров)

Последний раз редактировалось lemonplasticine; 07.12.2011 в 19:17.
lemonplasticine вне форума Ответить с цитированием
Старый 07.12.2011, 22:13   #2
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Ну у меня получилось 245215 таких уникальных совпадений
Сейчас думаю как это всё показать
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 07.12.2011, 22:20   #3
lemonplasticine
 
Регистрация: 07.12.2011
Сообщений: 6
По умолчанию

заранее большое спасибо жду!
а можно будет посмотреть методику решения такой задачи?

Последний раз редактировалось lemonplasticine; 07.12.2011 в 22:37.
lemonplasticine вне форума Ответить с цитированием
Старый 07.12.2011, 23:58   #4
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Ну я только такое придумал. Пробовал стандартными фильтрами - что-то ещё дольше получается. По идее запросами должно получиться быстрее, но я с ними мала дружу.
Вывод на лист не стал делать.
Результат в массиве MZ

Код:
Sub KOMB()
Dim M()
Dim LR, LC
Dim R, C, L, K
Dim PARA
Dim Dict As Object
Dim MK()
Dim MZ()
Set Dict = CreateObject("Scripting.Dictionary")
Sheets("Лист1").Select
LR = Cells(Rows.Count, 1).End(xlUp).Row
LC = Cells(1, Columns.Count).End(xlToLeft).Column
M = Range(Cells(1, 1), Cells(LR, LC)).Value
For C = 1 To LC - 1
    For L = C + 1 To LC
        For K = 2 To LR
            If M(K, C) = 1 Then
                If M(K, L) = 1 Then 'пара
                    PARA = M(1, C) & "+" & M(1, L)
'                   Debug.Print C, K, L, M(1, C), M(1, L), M(K, 1)
                    If Dict.Exists(PARA) Then
                        Dict.Item(PARA) = Dict.Item(PARA) & ";" & M(K, 1)
                    Else
                        Dict.Add PARA, PARA & "|" & M(K, 1)
                    End If
                    DoEvents
                End If
            End If
        Next K
    Next L
Next C
'Sheets("Лист2").Select
'Sheets("Лист2").Cells.ClearContents
'MK = Dict.keys
MZ = Dict.items

'Sheets("Лист2").Range("A1").Resize(Dict.Count) = Application.Transpose(Dict.keys)
'Sheets("Лист2").Range("B1").Resize(Dict.Count) = Application.Transpose(Dict.items)

End Sub
Изображения
Тип файла: jpg 48.jpg (58.2 Кб, 112 просмотров)
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 08.12.2011, 02:59   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вижу 77*n*(n-1)/2 вариантов.
вот это
Код:
Function Twice() As Long
  Dim N As Long, c As Long, r As Long
  N = 0
  For c = 3 To 1144
    For r = 2 To 78
      If Cells(r, c) = 1 Then N = N + WorksheetFunction.Sum(Range(Cells(r, 2), Cells(r, c - 1)))
    Next
  Next
  Twice = N
End Function
сосчитало 1 115 744 пар в Вашем файле
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 08.12.2011, 03:35   #6
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

А я пары не считал. Дабавил подсчёт - точно.
А вот уточнённое значение уникальных пар: 410637(нашёл у себя ошибку)
Остальные повторы по регионам
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 08.12.2011, 11:04   #7
lemonplasticine
 
Регистрация: 07.12.2011
Сообщений: 6
По умолчанию

спасибо большое! я правильно поняла, что у alex77755 считает только совпдаения по 1, а у IgorGO вообще все совпадения и нули тоже?

и еще, подскажите, пожалуйста, почему макрос может не запускаться? нажимаю кнопку запустить, процессор начинает грузиться, потом перестает,но ничего не происходит
lemonplasticine вне форума Ответить с цитированием
Старый 08.12.2011, 11:35   #8
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Запусти пошагово
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 08.12.2011, 11:37   #9
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Цитата:
а у IgorGO вообще все совпадения и нули тоже
а у IgorGO считает все пары, но не сортирует по регионам.
Общее количество пар у меня такое же
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 08.12.2011, 11:56   #10
lemonplasticine
 
Регистрация: 07.12.2011
Сообщений: 6
По умолчанию

все равно почемуто ничего не происходит. а можно попросить выложить уже готовый файлик экселя? может я чтото не так делаю, но эффект тот же - грузится цп, но ничего не происходит в файле на всех листах
lemonplasticine вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение значений в 2х столбцах и удаление лишних значений.. Tyr Microsoft Office Excel 2 16.12.2010 18:19
Сверка данных в столбцах XLS _Alias_ Microsoft Office Excel 29 03.09.2010 17:42
Сравнение данных в 2ух столбцах и копирование строк vwmexanik Microsoft Office Excel 26 15.02.2010 11:02
Сопоставление данных в двух столбцах plasticman Microsoft Office Excel 4 12.03.2009 17:45
сравнение данных в двух столбцах в Excel 2003 grinders Microsoft Office Excel 4 25.11.2008 16:58