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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.08.2010, 18:25   #1
Laa911
Заблокирован
 
Регистрация: 17.08.2010
Сообщений: 39
По умолчанию Сравнение столбцов в Excel

Есть N листов.
В каждом листе столбец А содержит N строк

Надо.
1. найти пересечение всех столбцов между собой
(например из 1000 строк листа 1 с листом 2 пересекаются 200, а с листом 3 - 900)
2. посчитать все это и скопировать столбцы на отдельный лист в порядке убывания пересечений

Такое вообще можно сделать?
На MS нашел скриптик
Sub Find_Matches()
Dim CompareRange As Variant, x As Variant, y As Variant
' Назначьте переменной CompareRange диапазон, с которым
' нужно сравнить выделенный диапазон.
Set CompareRange = Range("C1:C5")
' Примечание. Если диапазон ячеек, с которыми нужно сравнить выделенные ячейки,
' относится к другой книге или другому листу, используйте приведенный ниже синтаксис.
' Set CompareRange = Workbooks("Book2"). _
' Worksheets("Sheet2").Range("C1:C5")
'
' В следующем цикле каждая выделенная ячейка сравнивается
' с каждой ячейкой из диапазона CompareRange.
For Each x In Selection
For Each y In CompareRange
If x = y Then x.Offset(0, 1) = x
Next y
Next x
End Sub

Но он медленный и нехватает мозга его докрутить :-(
Laa911 вне форума
Старый 17.08.2010, 19:11   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А зачем вам макрос? Тут и формулы, скорее всего, справятся.
И где пример файла?


--------- добавлено позже, - вдруг кому пригодится --------------
Цитата:
Надстройка LOOKUP предназначена для сравнения и подстановки значений в таблицах Excel.

Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким),
и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую,
надстройка «Lookup» поможет сделать это нажатием одной кнопки.


В настройках программы можно задать:
  • где искать сравниваемые файлы (использовать уже открытый файл, загружать файл по заданному пути, или же выводить диалоговое окно выбора файла)
  • с каких листов брать данные (варианты: активный лист, лист с заданным номером или названием)
  • какие столбцы сравнивать (можно задать несколько столбцов)
  • значения каких столбцов надо копировать в найденные строки (также можно указать несколько столбцов)

Скачать надстройку для сравнения таблиц Excel и копирования данных из одинаковых строк


Последний раз редактировалось EducatedFool; 30.09.2013 в 09:23.
EducatedFool вне форума
Старый 17.08.2010, 19:12   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Пересечение-это наличие одинаковых значений в ячейках.
В отдельно взятом столбце есть повторения значений.
Меряться только с первым листом-будет N-1 сравнений ,или N*(N-1)/2
Анализ,обработка данных Недорого
doober вне форума
Старый 17.08.2010, 21:31   #4
Laa911
Заблокирован
 
Регистрация: 17.08.2010
Сообщений: 39
По умолчанию

Во блин спросили ;-)
1. внутри столбца повторений нет.
сверяться будут N*(N-1)/2
только не понял зачем разделить на 2 ?

т.е. есть 10 листов каждый лист(столбец) сверяется с 9 остальными т.е. получается 10*(10-1) сравнений
При этом необходимо что бы запоминались значения пересечений... и стоилась таблица из столбцов 10 листво в порядке убывания пересечений... + сводная табличка - название листа - его значение пересечения с последоваелем
Ну и кол-во листов надо что бы определялось автоматически ;-)

Наверное для Excell это космос ;-(
Вложения
Тип файла: rar Отель.Книги.Частоты.rar (7.54 Мб, 195 просмотров)

Последний раз редактировалось Laa911; 17.08.2010 в 21:52.
Laa911 вне форума
Старый 17.08.2010, 21:44   #5
Laa911
Заблокирован
 
Регистрация: 17.08.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А зачем вам макрос? Тут и формулы, скорее всего, справятся.
И где пример файла?
По поводу формул не понял... в Excell есть функции для работы с множествами?
Laa911 вне форума
Старый 18.08.2010, 01:05   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
1. внутри столбца повторений нет.
А это как объясните.Макрос ругаться начал,говорит есть повторы

И что теперь делать
Цитата:
только не понял зачем разделить на 2
Вы не путайте количество комбинаций и количество перестановок.
вы же не будете сравнивать лист1 лист 3,а потом опять лист3 с листом1.
Поэтому делиться на 2
Анализ,обработка данных Недорого
doober вне форума
Старый 18.08.2010, 09:00   #7
Laa911
Заблокирован
 
Регистрация: 17.08.2010
Сообщений: 39
По умолчанию

По поводу повторов - этого быть не должно видимо глюк программмы для подсчета частоты слов... ну это не сложно можно убить по кнопке удалить дубликаты

По поводу кол-ва.
при сравнение столбца 1 и 3 и 3 и 1 можно вычислить
что в столбце 1 слов входящих в столбец 3 меньше если сравнить столбец 3 и столбец 1 то может оказаться что слов входящих из столбца 3 в столбец 1 больше.

Ну например.. столбец 1 короче чем столбец 3 (как вариант)

поэтому мне кажется делить на 2 не надо :-) так как здесь на мой взгляд нужно именно количество комбинаций (т.е. без деления на 2) :-)

Последний раз редактировалось Laa911; 18.08.2010 в 09:02.
Laa911 вне форума
Старый 18.08.2010, 11:08   #8
Laa911
Заблокирован
 
Регистрация: 17.08.2010
Сообщений: 39
По умолчанию

Нампример если сравнивать два первых листа
то
Twilight1 в HoneyMoon - 3571 (слов)
а
HoneyMoon в Twilight1 - 1580 (слов)

Соттвественно
1. Twilight1 - №1
2. HoneyMoon - №2

А общее пересечение будет 1580

Спасибо вашим комментариям, пришло понимание что задач две

1. посчитать общие пересечения между всеми столбцами ( но с увеличемем столбцов(листов) это значение будеть падать?)
Но если сделать только п.2 то общее пересечение будет равно столбцу с наменьшим вхождением. получается что последователь всегда будет иметь пересечение с преджшественником на кол-во своих вхождение.. т.е. это делать не надо.. нужен только П.2.
2. посчитать вхождения всех строк между всеми столбцами (это не пересечения?) n*(n-1)
И отсортировать в порядке убывания вхождений.

Скрипт котоый был выше на 10 000 строк считал всю ночь и умер :-(
Брал его отсюда с MS http://support.microsoft.com/kb/213367
Видимо нужен какой то мега скрипт ;-)

Последний раз редактировалось Laa911; 18.08.2010 в 11:28.
Laa911 вне форума
Старый 18.08.2010, 14:31   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я до конца не понял.как должен выглядеть результат.Если как лист ПЕРЕСЕЧЕНИЯ,то надо1-2 минуты для получения данного результата.
Анализ,обработка данных Недорого
doober вне форума
Старый 18.08.2010, 14:34   #10
Laa911
Заблокирован
 
Регистрация: 17.08.2010
Сообщений: 39
По умолчанию

Да
1 столбец из столбца который максимально входит во все
2 столбец из столбца который максимально входит во все но меньше чем первый..
и т.д.
ну если это будет 1-2 минуты супер.. но не верю я в чудеса :-)
Laa911 вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение двух столбцов в разных книгах LAnLorD Microsoft Office Excel 132 17.05.2022 08:16
Сравнение в Excel whiteguru Microsoft Office Excel 3 06.07.2010 11:23
сравнение столбцов в Excel и подстановка значений Oleg77 Помощь студентам 2 06.02.2010 03:09
stringgrid,сравнение двух столбцов на совпадения и не совпадения betirsolt БД в Delphi 7 19.01.2010 15:09
Сравнение 2 столбцов и удаление повторяющегося из второго столбца ildusfm Microsoft Office Excel 3 07.05.2009 09:09