Калькулятор стоимости

margin-up

Новый пользователь
Сообщения
1
Реакции
0
Всем привет. Подскажите, пожалуйста, как реализовать данную задачу.

1)Необходимо сделать калькулятор стоимости. Стоимость зависит примерно от 8 переменных, часть из них будет реализовано выпадающим списком, а часть нужно будет указать числом(например, кол-во дней или кол-во человек). Цены будут указаны в таблице, поэтому нужно будет обратиться к нужной ячейке при определенной комбинации переменных, а затем это число умножается на кол-во дней и кол-во человек. Вид диалогового окна закинул во вложение.

2) Еще момент, так как структура достаточно большая, желательно сделать чтобы данные брались из разных книг(но это не второстепенно)

Подскажите, в какую сторону копать и как лучше реализовать. Есть пока только мысль реализовать это через "Иф" и прописать каждый возможный вариант, но достаточно много переменных.
 

Вложения

  • Калькулятор.png
    Калькулятор.png
    57.4 KB · Просмотры: 38
Лучше всего реализовать формой на мой взгляд или внутри самого листа.
Перед инициализации формы или при загрузке файла (а после по кнопке) подтянуть данные.
По кнопке на листе или в форме же и считать - написать процедуру, которая будет брать данные из формы\с листа и складывать\умножать.
 
@AssistGPT, что можешь подсказать по теме? Как реализовать этот калькулятор на vba ?
Для реализации калькулятора на VBA можно использовать форму или же создать пользовательскую функцию.

Если использовать форму, то можно создать элементы управления, такие как выпадающие списки и поля ввода, и написать код, который будет обрабатывать значения, введенные пользователем, и вычислять стоимость.

Если же использовать пользовательскую функцию, то можно создать функцию, которая будет принимать значения, введенные пользователем, и возвращать стоимость.

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

Пример кода для создания пользовательской функции:

Код:
Function CalculateCost(days As Integer, people As Integer, variable1 As String, variable2 As String) As Double
    Dim priceTable As Range
    Set priceTable = Worksheets("Sheet1").Range("A1:D5") 'замените "Sheet1" и "A1:D5" на нужные значения
    
    Dim price As Double
    price = WorksheetFunction.VLookup(variable1, priceTable, 2, False) * WorksheetFunction.VLookup(variable2, priceTable, 3, False)
    
    CalculateCost = price * days * people
End Function

В этом примере функция принимает значения количества дней, количества людей, переменной 1 и переменной 2, и возвращает стоимость. Функция использует функцию VLOOKUP для поиска цены в таблице на основе значений переменных 1 и 2, а затем умножает цену на количество дней и количество людей.

Вы можете вызвать эту функцию из ячейки, например, так:

Код:
=CalculateCost(5, 3, "значение1", "значение2")

Замените "значение1" и "значение2" на нужные значения.
 
@AssistGPT,
1)Необходимо сделать калькулятор стоимости. Стоимость зависит примерно от 8 переменных, часть из них будет реализовано выпадающим списком, а часть нужно будет указать числом(например, кол-во дней или кол-во человек). Цены будут указаны в таблице, поэтому нужно будет обратиться к нужной ячейке при определенной комбинации переменных, а затем это число умножается на кол-во дней и кол-во человек. Вид диалогового окна закинул во вложение.

2) Еще момент, так как структура достаточно большая, желательно сделать чтобы данные брались из разных книг(но это не второстепенно)
 
@AssistGPT,
1)Необходимо сделать калькулятор стоимости. Стоимость зависит примерно от 8 переменных, часть из них будет реализовано выпадающим списком, а часть нужно будет указать числом(например, кол-во дней или кол-во человек). Цены будут указаны в таблице, поэтому нужно будет обратиться к нужной ячейке при определенной комбинации переменных, а затем это число умножается на кол-во дней и кол-во человек. Вид диалогового окна закинул во вложение.

2) Еще момент, так как структура достаточно большая, желательно сделать чтобы данные брались из разных книг(но это не второстепенно)
Для реализации калькулятора стоимости на VBA можно использовать форму или же создать пользовательскую функцию.

Если использовать форму, то можно создать элементы управления, такие как выпадающие списки и поля ввода, и написать код, который будет обрабатывать значения, введенные пользователем, и вычислять стоимость.

Если же использовать пользовательскую функцию, то можно создать функцию, которая будет принимать значения, введенные пользователем, и возвращать стоимость.

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

Пример кода для создания пользовательской функции:

Код:
Function CalculateCost(days As Integer, people As Integer, variable1 As String, variable2 As String) As Double
    Dim priceTable As Range
    Set priceTable = Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1:D5") 'замените "Book1.xlsx", "Sheet1" и "A1:D5" на нужные значения
    
    Dim price As Double
    price = WorksheetFunction.VLookup(variable1, priceTable, 2, False) * WorksheetFunction.VLookup(variable2, priceTable, 3, False)
    
    CalculateCost = price * days * people
End Function

В этом примере функция принимает значения количества дней, количества людей, переменной 1 и переменной 2, и возвращает стоимость. Функция использует функцию VLOOKUP для поиска цены в таблице на основе значений переменных 1 и 2, а затем умножает цену на количество дней и количество людей.

Вы можете вызвать эту функцию из ячейки, например, так:

Код:
=CalculateCost(5, 3, "значение1", "значение2")

Замените "значение1" и "значение2" на нужные значения.

Чтобы данные брались из разных книг, нужно указать полный путь к файлу в строке, где определяется переменная priceTable. Например, если таблица с ценами находится в книге "Book2.xlsx", которая находится в папке "C:\Users\Username\Documents\", то строка будет выглядеть так:

Код:
Set priceTable = Workbooks("C:\Users\Username\Documents\Book2.xlsx").Worksheets("Sheet1").Range("A1:D5")

Замените "C:\Users\Username\Documents\Book2.xlsx", "Sheet1" и "A1:D5" на нужные значения.
 
Назад
Сверху Снизу