Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение элементов ячеек, Сравнение элементов ячеек 
:(
    Опции темы
alek1987new
  Дата 9.5.2010, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.11.2009

Репутация: нет
Всего: -1



Всем привет, мне инетересно, как можно сравнить столбец А листа 1 (количество элементов заранее не известно) со столбцом А листа2, записать одинаковые значения в лист3, а их тех листов удалить одинаковые значения.  Заранее спасибо.

Добавлено через 13 секунд
 smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile 
PM MAIL   Вверх
LOPUH
Дата 9.5.2010, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Растение
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 15.2.2008
Где: Красноярск

Репутация: 3
Всего: 4



Ну подходов может быть много..  Несколько вопросов:
1. Какой тип сравниваемых  элементов  (предположим -это строки, тогда необходимо знать являются ли одинаковыми строки, набранные в разных регистрах, т.е. нам необходим критерий сравнения)
2. Могут ли столбцы содержать повторяющиеся элементы?
3. Одинаковые ли по "высоте" сравниваемые  столбцы?
 В общем случае мы создаем массивы (частный случай-строки) из элементов столбцов и работаем с ними.
При желании, в  некоторых   случаях можно попытаться обойтись без программирования, используя функции  Excel  СОВПАД, ПОИСК
З.Ы. не стоит флудить смайликами..
 

Это сообщение отредактировал(а) LOPUH - 9.5.2010, 11:45
PM MAIL   Вверх
alek1987new
Дата 9.5.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.11.2009

Репутация: нет
Всего: -1



ответ

1. это строки ограниченного размера в 14 символов, любая ячейка содержит 14 символов
2. могут, но надо это исключить
3.  спомощью массивов  пробовал ничего не вышло

 smile 
PM MAIL   Вверх
Akina
Дата 9.5.2010, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Макрос на VBA. 

Цитата(alek1987new @  9.5.2010,  16:10 Найти цитируемый пост)
 спомощью массивов  пробовал ничего не вышло

Текст в студию


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
alek1987new
Дата 9.5.2010, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.11.2009

Репутация: нет
Всего: -1



вот текст

Код

Private Sub CommandButton1_Click()
Sheets("Ëèñò1").Select
irow10 = Columns("A").Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
'iClm = Rows(10).Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
'Cells(irow10 + 1, "A") = ComboBox1.Text
'Cells(irow10 + 1, "B") = ComboBox2.Text
'Unload UserForm3
 irow20 = Columns("D").Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
For i = 1 To irow10
'ListBox1.AddItem Cells(i, "A")
                       ' irow20 = Columns("D").Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
            For j = 1 To irow20
                    If Cells(i, "A") = Cells(j, "D") Then
                            
                            b = Cells(i, "A")
                           'Sheets("Ëèñò3").Select
                            Cells(j, "H") = b
                    Else
                         
                    End If
                    
            Next j
            
Next i

End Sub
 только пробовал, чтобы данные были в одном листе, а реально нужно чтобы данные были в разных листах, подскажите что делаю не так.
 :sample 


Добавлено через 29 секунд
а как с помощью макроса сделать?
PM MAIL   Вверх
Hugo121
Дата 10.5.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.5.2010

Репутация: 1
Всего: 2



Цитата

а как с помощью макроса сделать

Цикл for each по столбцу А, ищем в Б, если нашли - копируем в С и оба значения удаляем. Если возможны повторы - поиск, пока всё не нашли в Б и затем (если нашли) так же в А, всё удаляем.
Был бы пример - можно прикинуть конкретней, хотя лениво... (у меня есть уже готовый инструмент для таких операций, там только немного вручную сортировку и копи/паст приложить надо для этой задачи, поэтому неинтересно/бестолково писать). И непонятно, удалять только значение или строки целиком? (Тогда сперва Union, в конце удалять из А, или вместо for each цикл снизу. Если возможны повторы в А, тогда вероятно лучше Union, или удалять из А и Б, когда удалены повторы в А).
А может достаточно просто определить значения, которых нет во втором листе, а остальные переместить? А из Б найденные удалить?
И опять же, как часто это надо проделывать? Если возможно поработать вручную, дам инструмент. Если часто и надо всё на автомате - давайте конкретный пример в файле, на рабочих данных (чтоб структуру видеть).


Это сообщение отредактировал(а) Hugo121 - 10.5.2010, 21:58
PM MAIL   Вверх
Akina
Дата 10.5.2010, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(alek1987new @  9.5.2010,  22:06 Найти цитируемый пост)
вот текст

Ну и нет тут никаких массивов... ты работаешь непосредственно с ячейками листа. Долго и неудобно. Да и логики в твоём коде маловато.
В общем заведи 2 массива, загрузи в них данные с листов, отсортируй, а потом двухкурсорным спуском выкидывай дубли и переноси совпадения в третий массив. После чего вывали массивы на нужные листы. 
Ещё проще решать задачу, если вместо массивов взять коллекции.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.