Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Построчно-постолбцовая проверка данных / 5 сообщений из 5, страница 1 из 1
30.03.2014, 10:35
    #38600077
LeCrunch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построчно-постолбцовая проверка данных
Есть большие таблицы в Excel, содержащие, помимо прочих, два столбца с данными. Значения в них должны располагаться крест-накрест, например:
col1col2122140433333340412345678906789012345
Но бывают случаи, когда порядок нарушается, типа "разрыва пар":
col1col2122140433312345678906789012345333404
Или "неполных пар":
col1col22140433333340412345678906789012345
Подскажите с идеей для VBA, как оптимально осуществлять такую проверку нарушений, с окраской соответствующих ячеек в этих столбцах.
(Тип данных - целые числа, полных построчных дубликатов в этих колонках нет)
...
Рейтинг: 0 / 0
30.03.2014, 11:23
    #38600092
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построчно-постолбцовая проверка данных
Условное форматирование не устроит? Приложите файл-пример.
...
Рейтинг: 0 / 0
30.03.2014, 13:35
    #38600132
LeCrunch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построчно-постолбцовая проверка данных
Пример прилагается.
Таблицы формируются программно, т.е. интересен алгоритм для VBA, а не формулы для условного форматирования.
...
Рейтинг: 0 / 0
30.03.2014, 21:14
    #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
30.03.2014, 21:48
    #38600352
LeCrunch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построчно-постолбцовая проверка данных
В моем приложенном примере - третий столбец (курсивом) добавлен только для пояснения, в документах его нет, там другие нужные данные:)
И не слишком оптимально, может массивы для проверки приспособить?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Построчно-постолбцовая проверка данных / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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