Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Найти одинаковые значения в столбцах Excel Добавлено: 01.01.08 18:08  

Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info
Помогите решить задачу:
Имеется Workbook с двумя Worksheets.
В столбцах (скажем, их 50) WorkSheets(1) записаны различные 7-значные числа.
Необходимо создать макрос, который быстро выявит числа, которые встречаются не менее, чем в двух разных столбцах. И только совпадающие числа будут скопированы в Worksheets(2) в те же ячейки, где они находились в Worksheets(1) (числа, которые встречаются только в одном столбюце туда не копируются).
Сразу скажу, что вариант с проверкой числа из каждой ячейки путем пошагового сопоставлениями его со всеми ячейками в других столбцах не подходит, так как это слишком долго.

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #1
Добавлено: 01.01.08 21:07
____ 1. Можно сделать быстрее переписав сначала все столбцы в многомерный массив. Операции с ячейками работают очень долго.
____ 2. Можно "слить" всё в одномерный массив с проверкой в процессе копирования на повтор в пределах одного столбца и удаление повтора. Потом проверка на повтор по всему массиву.

Ответить

Номер ответа: 2
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #2
Добавлено: 01.01.08 23:50
Хорошо, тогда встречный вопрос:
- можно ли быстро загрузить столбец в массив, не шагая по ячейкам, а одним махом?

Ответить

Номер ответа: 3
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #3
Добавлено: 05.01.08 17:51
Можно.

Dim massiv as Variant
massiv = Range("A1:A65536";)
Debug.Print massiv(10,1)

Ответить

Номер ответа: 4
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 36
 Профиль | | #4 Добавлено: 06.01.08 15:25
Правильнее, наверное, будет через Transpose

Sub Макрос1()
Dim iArray()
Dim i As Long
    'загоняем одним махом диапазон ячеек A1:A20 в массив
    iArray = Application.Transpose(Range("A1:A20";))
    'отображаем каждое значение в окне Immediate (Ctrl+G)
    For i = 1 To UBound(iArray)
        Debug.Print iArray(i)
    Next
End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам