powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Построчно-постолбцовая проверка данных
5 сообщений из 5, страница 1 из 1
Построчно-постолбцовая проверка данных
    #38600077
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть большие таблицы в Excel, содержащие, помимо прочих, два столбца с данными. Значения в них должны располагаться крест-накрест, например:
col1col2122140433333340412345678906789012345
Но бывают случаи, когда порядок нарушается, типа "разрыва пар":
col1col2122140433312345678906789012345333404
Или "неполных пар":
col1col22140433333340412345678906789012345
Подскажите с идеей для VBA, как оптимально осуществлять такую проверку нарушений, с окраской соответствующих ячеек в этих столбцах.
(Тип данных - целые числа, полных построчных дубликатов в этих колонках нет)
...
Рейтинг: 0 / 0
Построчно-постолбцовая проверка данных
    #38600092
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Условное форматирование не устроит? Приложите файл-пример.
...
Рейтинг: 0 / 0
Построчно-постолбцовая проверка данных
    #38600132
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример прилагается.
Таблицы формируются программно, т.е. интересен алгоритм для VBA, а не формулы для условного форматирования.
...
Рейтинг: 0 / 0
Построчно-постолбцовая проверка данных
    #38600341
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неоптимально, но с приведенными данными работает - красит и формирует 3-й столбец:
Код: vbnet
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.
Sub bb()
Dim i&, j&
'1 этап - поиск аномалий
i = 3
While Cells(i, 1) <> ""
  If Cells(i, 1) = Cells(i - 1, 2) And Cells(i, 2) = Cells(i - 1, 1) Then
    Cells(i - 1, 3) = "OK": Cells(i, 3) = "OK"
    Cells(i - 1, 1).Resize(2, 2).Interior.ColorIndex = xlColorIndexNone
    i = i + 2
  Else
    Cells(i - 1, 3) = "без пары": Cells(i, 3) = "без пары"
    Cells(i - 1, 1).Resize(2, 2).Interior.Color = vbBlue
    i = i + 1
  End If
Wend
If Cells(i - 1, 3) = "" And Cells(i - 1, 2) <> "" Then
  Cells(i - 1, 3) = "без пары"
  Cells(i - 1, 1).Resize(, 2).Interior.Color = vbBlue
End If

'2 этап - поиск разрывов
For i = 2 To 16
  If Cells(i, 3) = "без пары" Then
    For j = 2 To i - 1
      If Cells(j, 3) = "без пары" Then
        If Cells(i, 1) = Cells(j, 2) And Cells(i, 2) = Cells(j, 1) Then
          Cells(i, 3) = "разрыв пары": Cells(j, 3) = "разрыв пары"
          Cells(i, 1).Resize(, 2).Interior.Color = vbRed
          Cells(j, 1).Resize(, 2).Interior.Color = vbRed
          Exit For
        End If
      End If
    Next
  End If
Next
End Sub
...
Рейтинг: 0 / 0
Построчно-постолбцовая проверка данных
    #38600352
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В моем приложенном примере - третий столбец (курсивом) добавлен только для пояснения, в документах его нет, там другие нужные данные:)
И не слишком оптимально, может массивы для проверки приспособить?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Построчно-постолбцовая проверка данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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