powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / сравнение числовых значений
9 сообщений из 9, страница 1 из 1
сравнение числовых значений
    #35997320
tolko_y4ys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавлено: Ср Май 20, 2009 6:21 pm Заголовок сообщения: сравнение значений

--------------------------------------------------------------------------------

здраствуйте, у меня к вам такой вопрос:
в экселе в одной ячейке идёт перечисление нескольких числовых значений через запятую, вводим любое значение, необходимо проверить - повторялось ли данное значение в уже перечисленных

нашла макрос:

Sub Find_Matches()
Dim CompareRange As Variant, x As Variant, y As Variant
' Set CompareRange = Range("C1:C9000")
' Set CompareRange = Workbooks("Book2"). _
' Worksheets("Sheet2").Range("C1:C9000")
'
For Each x In Selection
For Each y In CompareRange
If x = y Then x.Offset(0, 1) = x
Next y
Next x
End Sub


но проблема в том, что сравнение идёт только если одно числовое значение написано в одной ячейке Excel'я, подскажите, пожалуйста, как сделать так, чтобы проверялись все по отдельности значения написанные в ячейке через запятую?
...
Рейтинг: 0 / 0
сравнение числовых значений
    #35997433
Фотография by-pass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в приведенном Вами примером используются встроенные возможности экселя
для Вашей задачи нужно:
- в цикле перебрать все ячейки, в которых ищется значение;
- использовать функцию Spleet();
- искать в полученном массиве;
если количество ячеек большое, работать будет долго :(
...
Рейтинг: 0 / 0
сравнение числовых значений
    #35997616
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
by-pass- использовать функцию Spleet();

Split
...
Рейтинг: 0 / 0
сравнение числовых значений
    #35999187
tolko_y4ys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм...спасибо за подсказку, нашла ещё один пример:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count = 1 Then
With Application
For Each x In Split(CStr(Target), ",")
If .Sum(.CountIf(Target.EntireColumn, Array(x, _
x & ",*", "*," & x & ",*", "*," & x))) > 1 Then
.EnableEvents = False
.Undo
.EnableEvents = True
Exit For
End If
Next
End With
Else
MsgBox "Изменения должны происходить в одной ячейке", , ""
End If
End Sub

но опять же, что-то не допонимаю, как ему применить к своей проблеме((((((((
...
Рейтинг: 0 / 0
сравнение числовых значений
    #35999758
tolko_y4ys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я так понимаю, мне необходимо с помощью функции split разбить эти числовые значения внутри ячейки на массивы, а затем сравнить эти массивы....хм...только что-то не соображу, как выполнить жто программно...((
...
Рейтинг: 0 / 0
сравнение числовых значений
    #35999847
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
куда вводим новое значение???
в ту же ячейку?
что за глупости, зачем?
...
Рейтинг: 0 / 0
сравнение числовых значений
    #35999988
tolko_y4ys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
видимо, я некорректно объяснилась...
значения, которые будем сравнивать вводим через запятую в другую ячейку
сравниваем значения, записанные в одной ячейке тоже через запятую
...
Рейтинг: 0 / 0
сравнение числовых значений
    #36000127
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
значения в ячейке A1 сравниваем с ячейкой B1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
'Private Sub Worksheet_Change(ByVal Target As Range)
Sub Check()
Dim x As Variant 'исходный массив
Dim y As Variant 'сравниваемый массив
Dim flag As Boolean
Dim o1, o2 As Variant
'    If Target.Address = "$A$1" Then
        x = Split(CStr(Trim(Cells( 1 ,  2 ))), ",")
        y = Split(CStr(Trim(Cells( 1 ,  1 ))), ",")
        flag = False
        For Each o1 In x
            For Each o2 In y
                If o1 = o2 Then
                    flag = True
                    Exit For
                End If
            Next o2
        Next o1
If flag = True Then
    MsgBox "Найден повтор"
Else
    MsgBox "ПОВТОРОВ НЕТ"
End If
End Sub
...
Рейтинг: 0 / 0
сравнение числовых значений
    #36000943
tolko_y4ys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо вам огромное
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / сравнение числовых значений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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