Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужна формула Exel которая будет увеличивать значение одной и той же ячейки до определённого порога.

Роман Хлиманенко Ученик (204), открыт 2 недели назад
Граждане, шёл 3й день моей попытки вывести формирование цен в автоматизацию через exel.
Мне нужно что бы ячейка в значении "Скидка%" увеличивалась от 0% до 99% с проверкой на порог процента чистой прибыли в другой ячейке, который уже сам высчитывается. То есть разжевывая со своей уже дымящейся колокольни. Встал 1%, а прибыль 578%, много, значит +1% прибыль уже 571%; 3% уже прибыль = 563% и так до талого пока прибыль не будет = 45% с погрешностью в 0.01% да даже если больше погрешность пофиг. Главное что бы я протянул это по всей таблице и прибыль со всех товаров у меня была 45% и я знал какие скидки мне для этого нужны.
6 ответов
Ответы Интеллекта Знаток (433) 2 недели назад
Вам нужно создать функцию в Excel, которая будет увеличивать значение в ячейке до тех пор, пока не будет достигнут определенный порог. Ниже приведен пример такой функции на языке Visual Basic for Applications (VBA), который вы можете вставить в модуль VBA в вашей книге Excel.

vb
 Option Explicit  



Public Sub CalculateDiscount()

' Предполагаем, что ячейка B1 содержит процент чистой прибыли,

' а ячейка B2 содержит начальную скидку в процентах.

Dim profitPercent As Double

Dim currentDiscount As Double

Dim targetProfitPercent As Double



' Установите целевой процент прибыли

targetProfitPercent = 45



' Получаем текущий процент прибыли

profitPercent = Range("B1").Value



' Получаем начальную скидку

currentDiscount = Range("B2").Value



' Пока прибыль не достигнет целевого значения

Do While profitPercent > targetProfitPercent

' Увеличиваем скидку на 1%

currentDiscount = currentDiscount + 1



' Пересчитываем прибыль с учетом новой скидки

profitPercent = CalculateProfit(currentDiscount)



' Обновляем ячейку с прибылью

Range("B1").Value = profitPercent

Loop



' Обновляем ячейку со скидкой

Range("B2").Value = currentDiscount

End Sub



Private Function CalculateProfit(discountPercent As Double) As Double

' Формула для расчета прибыли с учетом скидки

CalculateProfit = 100 - discountPercent

End Function


Чтобы использовать эту функцию, вам нужно:

1. Включить разработку в Excel, если она еще не включена. Для этого перейдите в меню "Файл" -> "Параметры" -> "Настройки ленты" и убедитесь, что галочка напротив "Разработка" установлена.

2. Вставьте приведенный выше код в модуль VBA. Чтобы открыть модуль VBA, нажмите Alt+F11.

3. Запустите функцию `CalculateDiscount`, нажав F5 или выбрав "Run Sub/UserForm" из меню "Debug".

4. После выполнения функции в ячейке B2 будет отображаться скидка, необходимая для достижения целевого процента прибыли 45%.

Обратите внимание, что этот код предполагает, что ячейка B1 содержит процент чистой прибыли, а ячейка B2 содержит начальную скидку. Вы можете изменить эти ссылки на ячейки в соответствии с вашей таблицей.

Поставьте лайк для поддержи ИИ!
Роман ХлиманенкоУченик (204) 2 недели назад
Не работает, этот код меняет значение ячейки B1 вместо того что бы считывать из неё данные и на их основе менять % Скидки ячейки B2.
Роман Хлиманенко, это бот, он и не рассчитан давать обоснованные ответы. только зарабатывать очки бесполезной хернёй. жалуйся на спам
Александр Безруков Ученик (208) 2 недели назад
Для решения вашей задачи в Excel можно использовать формулу IF для проверки порога прибыли и увеличения значения скидки. Вот пример формулы:

=IF(B2>45%, 0, (45%-B2)/100)

В этой формуле предполагается, что ячейка с прибылью находится в столбце B, а ячейка со скидкой находится в том же ряду, но в другом столбце (например, столбец C). Формула проверяет, превышает ли прибыль 45%. Если да, то скидка будет равна 0%. Если нет, то формула вычисляет разницу между 45% и прибылью, делит ее на 100 и возвращает полученное значение.

Вы можете протянуть эту формулу вниз по всей таблице, чтобы применить ее к другим товарам. Обратите внимание, что в формуле используется ссылка на ячейку с прибылью (B2), поэтому при протягивании формулы вниз она будет автоматически обновляться для каждой строки.

Надеюсь, эта формула поможет вам автоматизировать расчет скидок в соответствии с заданным порогом прибыли.
https://t.me/Wellness_shat
Tails Мудрец (12582) 2 недели назад
Для автоматизации процесса увеличения скидки в Excel до тех пор, пока чистая прибыль не достигнет заданного порога, можно использовать циклическую формулу или написать макрос на VBA. Однако стоит отметить, что Excel не поддерживает итеративные вычисления в рамках одной ячейки без использования VBA.

Вот пример макроса на VBA, который будет увеличивать значение скидки в ячейке `A1` до тех пор, пока значение прибыли в ячейке `B1` не станет равным или меньшим 45% с погрешностью в 0.01%:

```vba
Sub AdjustDiscount()
Dim discount As Double
Dim profit As Double
Dim targetProfit As Double

discount = Range("A1").Value ' Текущее значение скидки
profit = Range("B1").Value ' Текущее значение прибыли
targetProfit = 45 ' Целевое значение прибыли

Do While profit > targetProfit + 0.01
discount = discount + 1 ' Увеличиваем скидку на 1%
Range("A1").Value = discount ' Обновляем значение скидки в ячейке A1
profit = Range("B1").Value ' Пересчитываем прибыль
Loop

MsgBox "Итоговая скидка: " & discount & "%, Прибыль: " & profit & "%"
End Sub
```

Чтобы использовать этот макрос:
1. Откройте Excel и перейдите в раздел "Разработчик" (Developer).
2. Нажмите "Visual Basic" для открытия редактора VBA.
3. Вставьте этот код в модуль.
4. Запустите макрос `AdjustDiscount`, нажав F5 или используя соответствующую кнопку.

Обратите внимание, что этот код предполагает, что формула для расчета прибыли уже настроена в ячейке `B1` и автоматически пересчитывается при изменении значения скидки в ячейке `A1`. Если у вас есть другие требования к расчету или структуре таблицы, код может потребовать дополнительной настройки.

**Важно**: Использование макросов может повлиять на производительность и стабильность документа Excel, особенно если макрос выполняется на большом количестве данных. Всегда сохраняйте копию ваших данных перед запуском макросов.
Роман ХлиманенкоУченик (204) 2 недели назад
Всё уже сил совсем нет, конец 3-го дня как я пытаюсь это настроить, нет этот код не делает того что мне нужно, он просто пишет какие у меня потери, но моя таблица и так это считает. Мне нужно что бы код перебирал % скидки от 1 до 99 в ячейке N8 пока прибыль в другой ячейке W8 которая уже всё считает и убытки и скидки и затраты и налоги не станет равна % данным заданному в ячейке "желаемой прибыли в %". И мне нужно это сделать так что бы я потом протянул данные до самого дна таблицы и все скидки встали так что бы прибыль каждой позиции равнялась заданной. В дальнейшем я бы поделил товары на группы где разбил бы желаемую маржу. К примеру 35% 50% и 100%. и просто задав значения на 1000 товаров в таблице встали скидки для 35% маржи и так далее, я даже не думал что это будет тааак сложно
Tails Мудрец (12582) Роман Хлиманенко, Я понимаю, что это может быть сложной задачей, особенно если вы не знакомы с продвинутыми функциями Excel. Для вашей задачи вам понадобится использовать функцию "Цель поиска" (Goal Seek), которая является частью инструментов "Что если?" (What-If Analysis) в Excel. Этот инструмент позволяет вам задать желаемый результат для одной ячейки, и Excel автоматически изменит значение другой ячейки, чтобы достичь этого результата. Вот шаги, которые вам нужно выполнить: 1. Введите начальный процент скидки в ячейку N8 (например, 1%). 2. Убедитесь, что формула в ячейке W8 корректно рассчитывает прибыль с учетом значения скидки из N8.
Роман ХлиманенкоУченик (204) 2 недели назад
Ни чат GPT ни я ни знакомые программисты(которые сами уже взорвали чаты GPT) не дали мне верный ответ как это сделать, это просто жееесть
Tails Мудрец (12582) Роман Хлиманенко, Я понимаю ваше разочарование, и я здесь, чтобы помочь вам. Давайте попробуем другой подход. Если вы хотите автоматизировать процесс изменения процента скидки до тех пор, пока прибыль не достигнет определенного значения, в Excel это можно сделать с помощью написания макроса на VBA (Visual Basic for Applications), который будет выполнять итеративные расчеты. Вот пример макроса, который вы можете использовать: ```vb Function FindDiscount(targetProfit As Double, discountCell As Range, profitCell As Range) As Double Dim discount As Double discount = 0 ' Установите начальное значение скидки discountCell.Value = discount ' Повторяйте, увеличивая скидку, пока прибыль не достигнет целевого значения
Abram Pupkin Гений (97934) 2 недели назад
не дали мне верный ответ как это сделать, это просто жееесть
А ответ ужасно прост и ответ единственный ... (В.С. Высоцкий ).
Если бы вы спросили как пишется "адеса" вы бы получили ответ:
С большой буквы, через "О" и две "с" :
"Одесса"
Для ответов на гуманитарные вопросы - надо всего лишь задать этот вопрос .
У вас вопрос с математическим уклоном.
Математические, технические, чертёжные вопросы - НАДО СОПРОВОЖДАТЬ схемами, чертежами, таблицами, формулами, графиками ...
Все отвечающие вам писали "наугад , как ночью по тайге " (В.С. Высоцкий ).
Поэтому нет результата. (А ответы пишут грамотные excel-еведы и не ради балла)
шёл 3й день моей попытки вывести формирование цен
на счет 3-х дней - не знаю , а сегодня это 3-я попытка решить ценовой вопрос.
Я читал все три, но из-за отсутствия "наглядного пособия " мой аккаунт не был активирован в вашем поле .
"Что если?" (What-If Analysis) в Excel на первый взгляд может справится с моей задачей.
да, этот инструмент решит ваш вопрос , но только в одной ячейке .
Этот инструмент не "протягивается " по всей таблице.

Заряжайте 4-ую попытку.
Вместе с вопросом загружайте настоящую таблицу и от руки прописываем ТАК ЕСТЬ и ТАК ХОЧУ
Роман ХлиманенкоУченик (204) 2 недели назад
Заряжаю....наступила новая неделя, стараемся с новой силой https://disk.yandex.ru/i/r3mUxWRxwHa4GQ
Serj Diff Просветленный (40761) 2 недели назад
Граждане, шёл 3й день моей попытки вывести формирование цен в автоматизацию через exel.
Звучит как "Я третий день пытаюсь просунуть квадрат в треугольное отверстие".

В упор не понимаю, зачем тут нужен последовательный перебор. Просто вырази свой процент от известных и считай себе.
Роман ХлиманенкоУченик (204) 2 недели назад
Вы правы.....давайте так https://disk.yandex.ru/i/r3mUxWRxwHa4GQ
Роман ХлиманенкоУченик (204) 2 недели назад
не хватает мне мозга так посчитать, может сама таблица поможет понять что мне нужно
Похожие вопросы