-6 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 274
1

Модифицировать макрос для нахождения нужного значения

03.10.2015, 20:57. Показов 1580. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте форумчане. Нужна помощь в модификации(изменении макроса.) Решил создать новую тему. Т.к. в старой ветке(теме) автор данного макроса не отвечает.
Мне понадобилось модифицировать макрос, для нахождения нужного мне значения. Раньше мы находили:
Visual Basic
1
 sS / sU * 100
а теперь нужно: sS * (sS / sU * 100)
Но тут появилась загвоздка!: Во многих случаях значения sS и получаемое Число X (sS / sU * 100) отрицательные/ А когда "-" умножается на "-", то получается "+"! Что портит всю картину. Мне нужно чтобы, при условии, если sS <0 и (sS / sU * 100) <0, то при их умножении получался отрицательный результат, а не переходил в плюс.
Нужно что то вроде условия:

Visual Basic
1
(ЕСЛИ(И(sS <0; (sS / sU * 100) <0);-(sS*(sS / sU * 100));(sS*(sS / sU * 100)))
А как это сделать в VBA я не знаю.
прикрепил файл. Там жёлтые ячейки указал где отрицательное значение в итоге после переумножения даёт положительно. Там же и изменённый ваш макрос.
Ссылка на файл с примером: https://www.cyberforum.ru/atta... 1443276646
Сам макрос внутри этого файла.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2015, 20:57
Ответы с готовыми решениями:

Макрос для нахождения текстового значения с определенными условиями
Объясняю задачу более полно. Необходимо в таблице найти значение Н/Д(в столбике С), в этой же...

Макрос для нахождения максимального значения в каждом столбце данной матрицы
В таблице Excel в диапазон A1:Е5 внесите любые числа. Напишите макрос для нахождения максимального...

Напишите макрос для нахождения минимального значения в каждом столбце данной матрицы
В таблице Excel внесите в ячейки А1:А10 10 любых чисел. Напишите макрос, который выводит в столбце...

Макрос: Написать макрос по сравнению двух таблиц для нахождения несоответствий...
знатоки, прошу помощи в еще одном деле: есть два листа, --в одном список: яблоко, груша, слива, ...

7
Заблокирован
03.10.2015, 21:24 2
Лучший ответ Сообщение было отмечено Erolim как решение

Решение

ABS(sS) * (sS / sU * 100), если я правильно понял проблему?
1
-6 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 274
03.10.2015, 21:40  [ТС] 3
Апострофф, прошу прощения. что то замудрил.
Нужно вот примерно так, только чтоб в VBA макросе это делалосьЕСЛИ(И(sS<0; sU<0);-(sS*(sS / sU * 100));(sS*(sS / sU * 100)))

Добавлено через 7 минут
Апострофф, вы смотрели макрос? сообразили, что он и как делает? что такое ABS я не знаю. Я написал только то что было в макросе
Изначальный макрос был такой:
Visual Basic
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
Sub Viborkaaa()
Dim lR, k, R, R1, sS, sU, Цифр As Integer, M()
'Цифр = InputBox("Скока цифр", "", 7)
Цифр = 7
With ActiveSheet
lR = .Cells(.Rows.Count, 19).End(xlUp).Row
.Range("AA15:AA" & lR).ClearContents
ReDim M(1 To lR - 14, 0)
    For R1 = lR To 15 Step -1
        k = 0: sS = 0: sU = 0
        For R = R1 - 1 To 15 Step -1
            sS = sS + .Cells(R, 19)
            If .Cells(R, 19) <> 0 Then sU = sU + .Cells(R, 21): k = k + 1
            If k = Цифр Then Exit For
        Next R
        Select Case sS
        Case 0
            M(R1 - 14, 0) = "0"
        Case Else
            M(R1 - 14, 0) =  sS / sU * 100
        End Select
    Next R1
 .Range("AA15:AA" & lR) = M
End With
 
End Sub
А мне нужно теперь за место sS / sU * 100, что было sS * (sS / sU * 100).
но по причине того что значение sS и полученное значение (sS / sU * 100) могут быть оба отрицательными, то минус на минус получается плюс. А мне нужно чтоб так и оставался минус!(при условии что "sS" и значение получаемое формулой (sS / sU * 100) отрицательные)
Я в макросах не очень соображаю и в написании кода тоже.
То что я сообразил это только то, что значения sS берутся из столбца S, а sU из столбца U (для нахождения нужно числа икс из первого задания).
0
Заблокирован
03.10.2015, 21:41 4
Erolim, Вы попробовали предложенный вариант?
0
-6 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 274
03.10.2015, 21:42  [ТС] 5
Апострофф, какой? где? я что то упустил? этот :ABS(sS) * (sS / sU * 100) ?
0
Заблокирован
03.10.2015, 21:49 6
Да, вставьте это вместо вашего.
ABS - это модуль, можно было бы и догадаться...
1
-6 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 274
04.10.2015, 21:53  [ТС] 7
Апострофф, Благодарю. работает!
Подскажите пожалуйста. где исправить в макросе, чтобы значение которое определяется по формуле:ABS(sS) * (sS / sU * 100) было на одной строке, и не было сдвига на 1 строчку вниз.

Добавлено через 23 часа 31 минуту
Апострофф, Вы где?
0
Заблокирован
05.10.2015, 06:53 8

Не по теме:

Цитата Сообщение от Erolim Посмотреть сообщение
Апострофф, Вы где...

Я думаююю...
Миниатюры
Модифицировать макрос для нахождения нужного значения  
1
05.10.2015, 06:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2015, 06:53
Помогаю со студенческими работами здесь

Условие для возвращения нужного значения
Можете подсказать какое условие нужно указать, чтобы возвращалось нужное значение, а не первое...

Макрос для нахождения наибольшего числа
Не могу разобраться с макросами, но страсть как хочется, помогите написать макрос. #define MAX(x,...

Составить программу для определения вычисления нужного значения
Рекурсивный процесс

Задавать значения для DataGridView нужного столбца, начиная с нуля
Привет всем! есть код, вида: ListUsers.DataGridView.Rows.Add(item); item - заполняется...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru