powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с массивами
13 сообщений из 13, страница 1 из 1
Работа с массивами
    #34726552
Xelag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
У меня есть проблемка... нужно в экселе написать макрос, который сравнит два массива по строкам, каждый из которых состоит из двух колонок - первая - это цифры, вторая - текст.
Если строка искомого массива найдена во втором, то нас это уже не интересует, если же нет - надо понять, нет ли такой строки в проверяемом массиве вообще, или ошибка в некоторых символах, будь то текст или цифра(а главное, если ошибка в символах, то надо понять, где эта строка находится) - ээм, немного витиевато, но по-другому не написать.

Не могли бы мне помочь с этой задачкой? ^__^
Спасибо.
...
Рейтинг: 0 / 0
Работа с массивами
    #34727334
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Массивы - это области на листе Excel?
На листе это можно просто сделать: сначала поиском и исключением того, что найдено, а затем анализ не найденого.
Проверка на схожесть - не совсем простая задача и как это реализовывать-зависит от вида данных. Покажите образцы данных для начала.
...
Рейтинг: 0 / 0
Работа с массивами
    #34727384
Xelag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну образно выглядит так:
Sheet1 - исходник
Sheet2 - массив, требующий проверки.
...
Рейтинг: 0 / 0
Работа с массивами
    #34727392
Xelag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Работа с массивами
    #34727404
Фотография Rampage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да , ябы сделал , например что то вроде
если первая ячейка строки равна первой ячейке второго массива, а вторая ячейка второго массива равна второй ячейке первого , тогда делит ,
ну ячейку как функцию +1 , и в итоге останутся несовпадающие, а дальше уж , сложновато, несоответствие в символах искать для меня :\
...
Рейтинг: 0 / 0
Работа с массивами
    #34727418
Xelag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну эти две таблички по идее разных размеров, так как что-то может быть недобавленным или дублированным, также, информация в позиции A2:B2 в исходнике может находится во втором шите абсолютно на другой позиции.
...
Рейтинг: 0 / 0
Работа с массивами
    #34727550
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вся сложность в проверке на сходство, как и ожидалось. Такой вопрос уже обсуждался на форуме. Есть алгоритмы для проверки английского языка, но для русского я не видел. Скорее всего, это нужно будет самим разрабатывать.
...
Рейтинг: 0 / 0
Работа с массивами
    #34727588
Xelag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ээм, а не могли бы вы подсказать ссылочку на тот топик? Я искал, но что-то ничего похожего не нашлось... =(
...
Рейтинг: 0 / 0
Работа с массивами
    #34727688
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XelagЭэм, а не могли бы вы подсказать ссылочку на тот топик? Я искал, но что-то ничего похожего не нашлось... =( Excel. Поиск похожего слова.
...
Рейтинг: 0 / 0
Работа с массивами
    #34727714
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самым точным решением всё равно будет:
Справа от каждого значения написать сколько придёт в голову неправильных написаний и поискать их все. Могут помочь следующие примочки:
- оператор Like
- приведение текста к одному регистру перед сравненем
- замена всех пробелов в значениях на ""(пусто) перед сравнением, и в сравниваемом значении и в том, с которым сравниваем.
...
Рейтинг: 0 / 0
Работа с массивами
    #34729276
Xelag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Function Findtext(Rng As Range, text As String) As String
Dim t As String
Dim mycell As Range
For Each mycell In Rng
if InStr(mycell.text, text) > 0 Then
if Len(t) = 0 Then
t = mycell.Address(False, False)
Else
t = t & "," & mycell.Address(False, False)
End If
End If
Next mycell
ContainsText = t
End Function

У меня массив двумерный
x0 y0
x1 y1
x2 y2, где x - число, y - текст. Ну и соответсвенно поиск нужно делать по x & y, потому что только их сочетание делает их уникальными.
Вот функция ищет текст в заданном диапазоне, а как сделать, чтобы он искал сразу и текст и численные выражения?
Хотя, наверное, лучше сделать, чтобы он искал по x, и если совпадение, то сравнивает сразу вторую ячейку, где y.
Вопрос на миллион долларов - как это осуществить? ^__^
...
Рейтинг: 0 / 0
Работа с массивами
    #34737286
Фотография Fatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде с твоей книгой выдает правильный результат:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub CompareRanges()

Dim rng1 As Range, rng2 As Range
Dim i, j, k
Set rng1 = Sheets("Sheet1").Range("A2:B11")
Set rng2 = Sheets("Sheet2").Range("A1:B9")
For i =  1  To rng1.Rows.Count
j =  0 

Do
j = j +  1 
If rng1.Cells(i,  1 ) = rng2.Cells(j,  1 ) And _
   StrComp(rng1.Cells(i,  2 ), rng2.Cells(j,  2 ), vbBinaryCompare) =  0  Then
   k = k +  1 
Sheets("Sheet3").Cells(k,  1 ) = rng1.Cells(i,  1 )
Sheets("Sheet3").Cells(k,  2 ) = rng1.Cells(i,  2 )
End If
Loop Until j = rng2.Rows.Count

Next i

End Sub

~'J'~
...
Рейтинг: 0 / 0
Работа с массивами
    #34738119
Xelag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хмм, у меня почему-то не работает...
я тут написал макрос, вроде как простой, но чо т нифига не работает
Sub find()
Dim xi As Double
Dim xj As Double
Dim yi As String
Dim yj As String
Dim j As Double
Dim i As Double
Application.ScreenUpdating = False
Sheet9.Activate
i = 'номер первого столбца, которым мы проверяем второй массив'
xi = Cells(i, 1).Value
yi = Cells(i, 2).Value
Do Until i = 'номер последнего столбца, которым мы проверяем второй массив'
Sheet2.Activate
j = 'номер первого проверяемого столбца'
Do Until j = 'номер последнего проверяемого столбца'
xj = Cells(j, 3).Value
yj = Cells(j, 4).Value
If xj = xi And yj = yi Then
Sheet2.Activate
Cells(j, 8).Value = "1"
Sheet9.Activate
Cells(i, 8).Value = "1"
Sheet2.Activate
End If
j = j + 1
Loop
i = i + 1
Loop
End Sub
Хелпаните плиз, почему не работает?
Он мне в шите 9(искомый шит) показывает везде единички, а в проверяемом(шит2) ничего не пишет.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с массивами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]