С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30

Сравнить строки в 2 столбцах каждую с каждой

20.01.2015, 22:03. Показов 4265. Ответов 69
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи у опытных людей. данные формируются вот в таком виде (файл приложен). Задача: в столбцах F и G (это координаты Х и У) сравнить строки, т.е. точку с номером 1 (строка 3) сравнить именно по координатам в этих 2х столбцах со всеми последующими точками. При совпадении координат присваивать точкам одинаковый номер, но наименьший. после этого перенумеровать все номера точек, т.к. если например точка №1 совпала с точкой №20 то 20я точка становится тоже №1, а точки №20 нет в нумерации. нумерация должна поменяться на такую: 18, 19, 1, 20, 21... Соответственно после этого проверяется точка №2 со всеми последующими и все то же самое по кругу. Пустые строки при этом должны остаться, и вся другая информация тоже остается как есть.
Сижу несколько дней уже, никак не могу разобраться как сделать, даже примеры представленные на сайте не получается переделать. Сейчас делаю все это вручную, а точек бывает ну оочень много.. Помогите люди добрые))
Вложения
Тип файла: xlsx координаты.xlsx (22.8 Кб, 9 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2015, 22:03
Ответы с готовыми решениями:

Как сравнить элемент 0 строки матрицы с элементом каждой строки
Есть матрица int n = {{1,1,0},{0,0,1},{1,0,0}}; int a = new int; for (int i=0;i<n.length-1;i++){ ...

Сравнить каждое слово из заданной строки с первый словом каждой строки в файле
Ребят, помогите!!! Уже наверное неделю мучаюсь(( Что не так? все время какие то ошибки. Задача такова: Нужно сравнить каждое слово из...

Сравнить строки каждой матрицы
даны 2 массива сравнить строки каждрй матрицы если 1-й элемент 1-го массива больше чем у 2-го то нужно записать ее как 1а если меньше то 0,...

69
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
20.01.2015, 22:59  [ТС]
готов отблагодарить материально)
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
20.01.2015, 23:17
Как срочно?

Добавлено через 7 минут

Не по теме:

Ну если копчик со мной не разговаривает, значит несрочно. Я спать:sleep:

0
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
21.01.2015, 05:36  [ТС]
не срочно!
0
Заблокирован
21.01.2015, 05:56
Цитата Сообщение от Kopchik Посмотреть сообщение
не срочно!
Да тут в течении дня можно решить, хочу вас обрадовать у меня как-раз раннее утро наступило

Добавлено через 6 минут
Как сделать?, отдельным модулем с несколькими макросами
но тогда лист придеться сохранить в формате xlsm или xls, пойдёт так ?
у вас какой Excel ?
1
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
21.01.2015, 06:03  [ТС]
дома 2007, на работе 2010. хотелось бы что бы и там и там работало. По формату мне важно что бы после выполнения макроса таблицу можно было пересохранить в .csv. тогда отдельным можно
0
Заблокирован
21.01.2015, 06:08
Цитата Сообщение от Kopchik Посмотреть сообщение
хотелось бы что бы и там и там работало
сделаю, задание не настолько сложное, можно решить общедоступными методами
самое главное Ваш файл я увидел, как чтото будет получаться скину наработки
1
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
21.01.2015, 06:10  [ТС]
Большое спасибо)
0
Заблокирован
21.01.2015, 06:58
Нумерацию совпавших точек в какой столбец выводить ?

Добавлено через 2 минуты
просто я могу и программно воткнуть еще один столбец, со своими расчетами

Добавлено через 28 минут
Вот я уже начал, проверь у себя меня волнует подключиться ли словарь ....

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Option Explicit
 
'Прошу помощи у опытных людей.
'данные формируются вот в таком виде (файл приложен).
'Задача: в столбцах F и G (это координаты Х и У) сравнить строки, т.е.
'точку с номером 1 (строка 3) сравнить именно по координатам в этих 2х
'столбцах со всеми последующими точками. При совпадении координат
'присваивать точкам одинаковый номер, но наименьший. после этого
'перенумеровать все номера точек, т.к. если например точка №1 совпала с
'точкой №20 то 20я точка становится тоже №1, а точки №20 нет в нумерации.
'нумерация должна поменяться на такую: 18, 19, 1, 20, 21... Соответственно
'после этого проверяется точка №2 со всеми последующими и все то же самое
'по кругу. Пустые строки при этом должны остаться, и вся другая информация
'тоже остается как есть.
' Сижу несколько дней уже, никак не могу разобраться как сделать,
' даже примеры представленные на сайте не получается переделать.
' Сейчас делаю все это вручную, а точек бывает ну оочень много..
' Помогите люди добрые))
Dim i&, j&, ii&, jj&, s$, ss$
Dim dict As Object, b&
 
Sub StartProg()
 
    Set dict = Nothing
    Set dict = CreateObject("scripting.dictionary")
 
    With Worksheets("координаты")
        For i = 2 To .Cells(.Rows.Count, 6).End(xlUp).Row
            s = .Cells(i, 6)
            If IsNumeric(s) Then
                ss = s & "/" & .Cells(i, 7)
                If Not dict.exists(ss) Then
                    dict.Add ss, 0
                Else
                    If b <> 7 Then b = MsgBox("Совпала " & i & " Строчка" & vbCrLf & _
                    "Показывать дальше ?", 68)
                End If
            End If
        Next
    End With
End Sub
0
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
21.01.2015, 07:14  [ТС]
Runtime error 9
Subscript out of range
0
Заблокирован
21.01.2015, 07:19
на 25 строке вылетела ? (CreateObject("scripting.dictionary"))

Добавлено через 2 минуты
А так ?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim i&, j&, ii&, jj&, s$, ss$
Dim dict As Object, b&
 
Sub StartProg()
    b = 0
    On Error Resume Next
    Set dict = Nothing
    Set dict = CreateObject("scripting.dictionary")
 
    With Worksheets("координаты")
        For i = 2 To .Cells(.Rows.Count, 6).End(xlUp).Row
            s = .Cells(i, 6)
            If IsNumeric(s) Then
                ss = s & "/" & .Cells(i, 7)
                If Not dict.exists(ss) Then
                    dict.Add ss, i
                Else
                    If b <> 7 Then b = MsgBox("Совпала " & i & " со строчкой " & dict(ss) & vbCrLf & _
                    "Показывать дальше ?", 68)
                End If
            End If
        Next
    End With
End Sub
Если не заработает перейду на коллекции
1
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
21.01.2015, 07:21  [ТС]
а как узнать?

Добавлено через 1 минуту
второй вариант запускаю, ошибок не выдает, но ничего не происходит
0
Заблокирован
21.01.2015, 07:23
Цитата Сообщение от Kopchik Посмотреть сообщение
но ничего не происходит
ясн, жди сейчас будет лучше, никуда не убегай
1
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
21.01.2015, 07:23  [ТС]
я уже на работе. буду на связи
0
Заблокирован
21.01.2015, 07:30
Цитата Сообщение от Kopchik Посмотреть сообщение
я уже на работе.
Ну будем считать и я тоже, на работе

Добавлено через 2 минуты
а сейчас ?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Dim i&, j&, ii&, jj&, s$, ss$
Dim dict As Object, b&
 
Sub StartProg()
    b = 0
    On Error Resume Next
    Set dict = Nothing
    Set dict = New Collection  'CreateObject("scripting.dictionary")
 
    With Worksheets("координаты")
        For i = 2 To .Cells(.Rows.Count, 6).End(xlUp).Row
            s = .Cells(i, 6)
            If IsNumeric(s) Then
                ss = s & "/" & .Cells(i, 7)
                Err.Clear
                dict.Add CStr(i), ss
                If Err = 0 Then
                    dict.Add CStr(i), ss
                Else
                    If b <> 7 Then b = MsgBox("Совпала " & i & " со строчкой " & dict(ss) & vbCrLf & _
                    "Показывать дальше ?", 68)
                End If
            End If
        Next
    End With
End Sub
Добавлено через 2 минуты
Цитата Сообщение от Kopchik Посмотреть сообщение
Runtime error 9
Subscript out of range
я вот думаю такая ошибка, на которую ты показал характерна при неправильном названии
листа, у тебя название листа совпадает с тем что я указал в коде
With Worksheets("координаты")
1
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
21.01.2015, 07:34  [ТС]
а если нет, то я просто в макросе меняю имя?
0
Заблокирован
21.01.2015, 07:36
Цитата Сообщение от Kopchik Посмотреть сообщение
а если нет, то я просто в макросе меняю имя?
Ну да, блин так мы никуда не сдвинемся, я ить от твоего выложенного файла отталкивался
ну меняй тогда название, можеш написать еще так:
With ThisWorkbook.Worksheets("название листа")
1
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
21.01.2015, 07:40  [ТС]
программа показывает совпадения строк. вроде правильно. только странно. не по порядку. сначала пишет например что совпала строка 13 с 8,106 с 91, 333 с 42, если бы по порядку проверял то должно было бы быть 42 с 333, причем между первыми двумя совпадениями. понимаешь о чем я?)
0
Заблокирован
21.01.2015, 07:45
Цитата Сообщение от Kopchik Посмотреть сообщение
странно. не по порядку
ну тут вот в чем дело, проверяются строки от самой верхней до самой нежней,
то например 8 строчка уникальная, она попадает в коллекцию, если есть совпадение
с другой строчкой программа это показывает, конечно это пока наработки
по хорошему надо бы выводить результаты совпадений в столбец, а затем провести еще один анализ
0
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 30
21.01.2015, 07:48  [ТС]
дело то ведь в том что после первого совпадения должна следовать перенумерация, поэтому на верно важно что бы было именно по порядку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.01.2015, 07:48
Помогаю со студенческими работами здесь

Для каждой строки матрицы найти и напечатать сумму значений элементов расположенных в столбцах с четными номерами
Помогите написать програму Для каждой строки матрицы найти и напечатать сумму значений элементов расположенных в столбцах с четными...

Как сравнить все числа каждой строки матрицы с заданным числом? VB 6.0
Даны натуральное число n, действительное число х, действительная матрица размера n х 2n .Получить последовательность b(1), ... , b(n) из...

В каждую из двух матриц вставить заданные числа перед максимальным элементом каждой строки.
1)Даны матрицы A и B при N=10,M=5,K=7,L=6 В каждую из двух матриц вставить заданные числа перед максимальным элементом каждой строки. ...

Сравнить длину строк, первый и последний символ каждой строки, вывести с заглавной буквы
Добрый вечер господа форумчане!Помогите решить задачу. Заранее спасибо. Запросите у пользователя две строки и сравните их длину, первый...

Процедуры и функции: Определить максимальный элемент каждой строки , отсортировать каждый столбец, затем каждую строку
Создать массив целых чисел 11 х 11 Определить максимальный элемент каждой строки , отсортировать каждый столбец, затем каждую строку


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru