|
|
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. У меня есть проблемка... нужно в экселе написать макрос, который сравнит два массива по строкам, каждый из которых состоит из двух колонок - первая - это цифры, вторая - текст. Если строка искомого массива найдена во втором, то нас это уже не интересует, если же нет - надо понять, нет ли такой строки в проверяемом массиве вообще, или ошибка в некоторых символах, будь то текст или цифра(а главное, если ошибка в символах, то надо понять, где эта строка находится) - ээм, немного витиевато, но по-другому не написать. Не могли бы мне помочь с этой задачкой? ^__^ Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 14:00:45 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
Массивы - это области на листе Excel? На листе это можно просто сделать: сначала поиском и исключением того, что найдено, а затем анализ не найденого. Проверка на схожесть - не совсем простая задача и как это реализовывать-зависит от вида данных. Покажите образцы данных для начала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 16:44:28 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
Ну образно выглядит так: Sheet1 - исходник Sheet2 - массив, требующий проверки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 16:56:02 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
да , ябы сделал , например что то вроде если первая ячейка строки равна первой ячейке второго массива, а вторая ячейка второго массива равна второй ячейке первого , тогда делит , ну ячейку как функцию +1 , и в итоге останутся несовпадающие, а дальше уж , сложновато, несоответствие в символах искать для меня :\ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 17:00:51 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
Ну эти две таблички по идее разных размеров, так как что-то может быть недобавленным или дублированным, также, информация в позиции A2:B2 в исходнике может находится во втором шите абсолютно на другой позиции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 17:04:00 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
Вся сложность в проверке на сходство, как и ожидалось. Такой вопрос уже обсуждался на форуме. Есть алгоритмы для проверки английского языка, но для русского я не видел. Скорее всего, это нужно будет самим разрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 17:43:31 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
Ээм, а не могли бы вы подсказать ссылочку на тот топик? Я искал, но что-то ничего похожего не нашлось... =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 17:55:41 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
XelagЭэм, а не могли бы вы подсказать ссылочку на тот топик? Я искал, но что-то ничего похожего не нашлось... =( Excel. Поиск похожего слова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 18:33:24 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
Самым точным решением всё равно будет: Справа от каждого значения написать сколько придёт в голову неправильных написаний и поискать их все. Могут помочь следующие примочки: - оператор Like - приведение текста к одному регистру перед сравненем - замена всех пробелов в значениях на ""(пусто) перед сравнением, и в сравниваемом значении и в том, с которым сравниваем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 18:48:37 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
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. Вопрос на миллион долларов - как это осуществить? ^__^ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2007, 13:26:16 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
Вроде с твоей книгой выдает правильный результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ~'J'~ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2007, 23:24:09 |
|
||
|
Работа с массивами
|
|||
|---|---|---|---|
|
#18+
хмм, у меня почему-то не работает... я тут написал макрос, вроде как простой, но чо т нифига не работает 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) ничего не пишет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2007, 12:27:39 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34727404&tid=2182438]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 341ms |

| 0 / 0 |
