Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/74: Рейтинг темы: голосов - 74, средняя оценка - 4.95
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 5

Сравнение значений в двух ячейках

10.10.2012, 14:05. Показов 14754. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день УВАЖАЕМЫЕ ФОРУМЧАНЕ !
У меня есть небольшой вопрос по макросам. Есть в VBA diff или то есть разница между чем либо.
1) У меня есть файл в котором есть 2 массива данных которые нужно сравнить (дата, время, номер телефона и дата, время, номер телефона). Сравнение по номеру телефона и дате я уже реализовал и код под них написал, но есть ячейки с временем и разница между ними от 0 до 5 минут и мне нужно чтобы по времени тоже сравнивало, учитывая разницу. Это работает только когда ячейки с одинаковыми данными находятся друг на против друга.
2) Есть еще небольшая проблема. Данные во 2 массиве могут находиться ниже и хотелось чтобы из 1 массива 3 эти ячейки сравнивались со всем 2 массивом до нахождения совпадения и тогда чтобы окрашивались они

Здесь я привел примерный код как я все начал реализовывать
Пока не багаж знания и требуется помощь начинающему программисту =)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub sravnenie()
 
    Dim al As Range, fl As Range
    For Each al In ActiveSheet.UsedRange.Rows
        For Each fl In ActiveSheet.UsedRange.Rows
            If Cells(fl.Row, 3).Value = Cells(fl.Row, 7).Value And Cells(fl.Row, 1).Value = Cells(fl.Row, 5).Value Then
                Rows(fl.Row).Select
                With Selection.Interior
                .ColorIndex = 46
                .Pattern = xlSolid
                End With
            End If
        Next fl
    Next
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2012, 14:05
Ответы с готовыми решениями:

Сравнение значений в соседних ячейках
Всем добрый день. Подскажите, пожалуйста, как можно сравнить данные в двух соседних ячейках Excel на совпадение по первым трем символам. В...

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

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

4
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
10.10.2012, 16:05
1) Объявляете переменную как тип Date и присваиваете ей значение ячейки с предварительным конвертированием в дату:
Visual Basic
1
2
Dim myDate as Date
myDate = CDate(Range("A1"))
Далее работаете с функцией DateDiff.

Функция DateDiff


DateDiff(Interval,Date1,Date2,[FirstDayOfWeek],[FirstWeekOfYear])

Функция DateDiff используется для вычисления разности двух дат

Возвращаемое значение

Возвращает значение типа Variant(Long), указывающее число временных интервалов между двумя датами

Параметры

Функция содержит именованные аргументы

* * Interval

Обязательный аргумент типа String, указывающего тип добавляемого временного интервала:

yyyy
Год

q
Квартал

m
Месяц

y
День года

d
День месяца

w
День недели

ww
Неделя

h
Часы

n
Минуты

s
Секунды

Interval не чуствителен к регистру букв.Литерал должен быть заключен в кавычки. Для вычисления дней между двумя датами можно использовать значение интервала дня:"y" или "d"

* * Date1
Обязательный аргумент типа Variant(Date) или литерал даты - первая календарная дата при вычислении разности дат

* * Date2
Обязательный аргумент типа Variant(Date) или литерал даты - вторая календарная дата при вычислении разности дат

* * FirstDayOfWeek
Необязательный аргумент типа Long, определяющего день недели. Допускается использование констант:

vbUseSystem=0
Используется значение национальных системных установок

vbSunday=1
Воскресенье(по умолчанию)

vbMonday=2
Понедельник

vbTuesday=3
Вторник

vbWednesday=4
Среда

vbThursday=5
Четверг

vbFriday=6
Пятница

vbSaturday
Суббота

* * FirstWeekOfYear
Необязательный аргумент - числовая константа, указывающая, какой день недели считать первым:

vbUseSystem=0
Используется системная информация

vbFirstJan1=1
Неделя, содержащая 1 января

vbFirstFourDays=2
Первая неделя, содержащая как минимум 4 дня нового года

vbFirstFullWeek=3
Первая полная неделя года

Пример:
Visual Basic
1
2
3
4
dim Today as Date, RetVal as long, myDate as date
myDate= CDate("11.11.2011 10:23:59")
Today=CDate(Date & " " & Time) 'получаем системное время/дату
retval = DateDiff ("s", Today, MyDate)


2) Примерчик бы.
1
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 5
11.10.2012, 09:20  [ТС]
Я немного еще подумал, дописал код и у меня получилось сравнение по массивам, то есть выбирается 3 ячейки 1 массива и сравнивается с 3 ячейками всего второго массива до нахождения одинаковых данных. Нужна помощь в реализации разницы во времени, так как это важный параметр, ведь в файле могут звонить за день на один и тот же номер несколько раз. и хотелось чтобы окрашивались все 3 ячейки а не одна как у меня никак с координатами не получается. Файл приложен

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub sravnenie()
 
    Dim gr1 As Range, gr2 As Range
    For Each gr1 In ActiveSheet.UsedRange.Rows
            For Each gr2 In ActiveSheet.UsedRange.Rows
                If Cells(gr1.Row, 3).Value = Cells(gr2.Row, 7).Value And _
                Cells(gr1.Row, 1).Value = Cells(gr2.Row, 5).Value Then
                    Cells(gr2.Row, 7).Select
                    With Selection.Interior
                    .ColorIndex = 46
                    .Pattern = xlSolid
                    End With
                End If
            Next gr2
    Next gr1
End Sub
Вложения
Тип файла: xls Test_1.xls (71.5 Кб, 84 просмотров)
0
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 5
11.10.2012, 09:28  [ТС]
Привет Dragokas! Спасибо большое про дату, но немного не то. У меня разница во времени, а время это отдельная ячейка, СРАВНЕНИЕ ПО ДАТЕ у меня работает хорошо
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
11.10.2012, 11:06
18fcv, извините, но Вы невнимательно читаете или читаете через слово.
Посмотрите, пожалуйста, еще раз на функционал DateDiff. Она сравнивает не только дату.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2012, 11:06
Помогаю со студенческими работами здесь

Сравнение значений двух книг
Здравствуйте. Имеется два списка (в аттаче) требуется: сравнить значения из колонки Штрихкод, при совпадении скопировать значение,...

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

Сравнение значений в двух идентичных таблицах
Друзья снова прошу помощи у вас Имеется 2 таблицы , одна на 4м , другая на 6м листе Что нужно ? Нужно чтобы число из 1й таблице сравнил...

Сравнение двух книг с записью разницы значений в третью книгу
Доброго времени суток. С VBA познакомился неделю назад, и поэтому следующая задача оказалась для меня трудноватой. Итак: существует файл...

Макрос: сравнение двух столбцов с суммированием их значений и удаление дублей
Всем Доброго времени суток!!! Файл который необходимо адаптировать во вложении. Прошу подсказать с макросом------ Суть такова. 1)...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru