Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 14.10.2017, 15:15   #1
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
Восклицание Выделить в диапазоне все зависимые строки

Выделить в диапазоне все зависимые строки. Зависимыми считать строки, если одна строка получается в результате умножения другой строки на коэффициент.
Это надо реализовать все в модуле-классе. А в обычном модуле (основном) надо создать экземпляр объектов этого модуля-класса. В диапазоне могут быть не только числовые, но и текстовые данные.
Так мне все это реализовать? Помогите мне пожалуйста. А то я уже который день не могу придумать оптимальный алгоритм для решения данной задачи.
Алгоритм для основного (обычного) модуля я еще не разработала.
Вот код макроса для класса-модуля (здесь еще должна быть две проверки условия на то — является ли данное записанное в ячейке — числом или нет, если нет — то обойти ячейку и вторая это проверка условия деления на 0, если число в ячейку делится на 0, обойти ячейку):
Option Explicit
Public Область As Range
Dim i2 As Byte, j2 As Byte, k As Byte, коэфф As Double
Sub Определитькоэффициент()
For i2 = 1 To Область.Rows.Count — 1
For k = i2 + 1 To Область.Rows.Count
коэфф = Область.Cells(i2, j2) / Область.Cells(k, j2)
For j2 = 1 To Область.Columns.Count
If (коэфф = Область.Rows(i2).Cells(j2)) And (коэфф = Область.Rows(k).Cells(j2)) Then
ЦветЯчеек Range(Область.Cells(i2, j2), Область.Cells(i2, j2))
End If
Next j2
Next k
Next i2
End Sub

Sub ЦветЯчеек(Цвет As Range)
Цвет.Interior.ColorIndex = 43
End Sub
Вот код макроса для главного модуля, где будут создаваться экземпляры класса-модуля:
Option Explicit
Sub ОбработатьДиапазон()
Dim Диапазон As КлассДиапазон
Set Диапазон = New КлассДиапазон
Set Диапазон.Область = Worksheets(«Практическая №2»).Range(«D7:H12»)
Диапазон.Определитькоэффициент
Set Диапазон = Nothing
End Sub
Скриншот
74444154c892e82ef025de4fe931123a.jpg

Помогите мне срочно, я уже целый месяц не знаю как решить данную задачу.
nightofpromises вне форума   Ответить с цитированием
Старый 15.10.2017, 22:58   #2
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 15.02.2009
Сообщений: 753
По умолчанию

Цитата:
Вот код макроса для главного модуля
Так все ж есть!
Копируй код в модуль, модуль класса...
Начинай делать!
эти строчки поменяй местами
Код:
коэфф = Область.Cells(i2, j2) / Область.Cells(k, j2)
For j2 = 1 To Область.Columns.Count
И замени кавычки
А со скриншотами не сюда! Это на форум по фотошопу!
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума   Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывести на экран все числа, делящиеся на 3 в диапазоне vova_makr Помощь студентам 4 28.09.2015 17:35
Как выделить сразу все строки? deserving83 Microsoft Office Excel 4 12.07.2013 05:57
Найти все простые числа в заданном диапазоне Nikita++ Помощь студентам 8 20.10.2010 20:05
выделить все строки цветом по заданому условию mars56 Microsoft Office Excel 2 15.02.2010 08:55
Выделить все Михаил Юрьевич Общие вопросы Delphi 1 22.02.2008 00:12