Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сортировка данных массива и еще что-то - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка данных массива и еще что-то (Макросы/Sub)
Сортировка данных массива и еще что-то
MaxDyr Дата: Вторник, 12.04.2016, 23:16 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel для Mac
Всем привет! Помогите пожалуйста написать программу для решения задачи в Excel. Сама задача и ход ее решения прописан ниже. Заранее признателен.

Исходные данные:
5 поставщиков (A, B, C, D, E) которые предлагают разный объем товара по разной цене.
Нужно обеспечить покрытие спроса (Спрос = 65 единиц) по минимальной цене.
Дополнительное условие: все поставщики продадут свой товар по единой цене, которая будет равна цене того поставщика предложение которого станет "замыкающим" при покрытии спроса.


1. Сортируем поставщиков по заявленной цене от меньшей к большей


2. Находим такой набор поставщиков, который будет покрывать спрос (65 единиц)
C = 30 < 65 - условие не выполнено
C+A = 30+20 = 50 < 65 - условие не выполнено
C+A+D = 30+20+15 = 65 = 65 - условие выполнено

3. Выводим данные поставщиков которые "сыграли" в новую таблицу и находим "замыкающее" предложение


4. Рассчитываем выручку каждого поставщика, с учетом того, что "замыкаюшим" стал поставщик "D" с заявленной ценой 3 за единицу товара.


Пока что, моей фантазии хватило на такое:
[vba]
Код
Sub bubble_1()

Dim arrName(5, 1) As String                         'задаю массив 5х1 с названиями поставщиков
Dim arrBubble(5, 2) As Long                         'задаю массив с числовыми значениями

For i = 1 To 5
        arrName(i, 1) = Worksheets("Лист1").Cells(i + 1, 1).Value          'заношу название поставщиков в массив arrName
        arrBubble(i, 1) = Worksheets("Лист1").Cells(i + 1, 2).Value         'заношу заявленные цены в массив arrBubble
        arrBubble(i, 2) = Worksheets("Лист1").Cells(i + 1, 3).Value         'заношу объемы товара в массив arrBubble
Next i

For j = 1 To 5
        For i = 1 To 5
          If arrBubble(i, 2) > arrBubble(i + 1, 2) Then            'Сортировка пузырьком по цене
                temp1 = arrBubble(i, 1)                    'Сортирую цены
                temp2 = arrBubble(i, 2)                    'Сортирую объемы
                temp3 = arrName(i, 1)                    'паралельно сортирую значения в массиве с названием
                arrBubble(i, 1) = arrBubble(i + 1, 1)
                arrBubble(i, 2) = arrBubble(i + 1, 2)
                arrName(i, 1) = arrName(i + 1, 1)
                arrBubble(i + 1, 1) = temp1
                arrBubble(i + 1, 2) = temp2
                arrName(i + 1, 1) = temp3
        End If
    Next i
Next j

For i = 1 To 5
        Worksheets("Лист2").Cells(i + 1, 1).Value = arrName(i, 1)    'вывожу на новы лист отсортированные названия
        Worksheets("Лист2").Cells(i + 1, 2).Value = arrBubble(i, 1)    'вывожу на новы лист отсортированные цены
        Worksheets("Лист2").Cells(i + 1, 3).Value = arrBubble(i, 2)    'вывожу на новы лист отсортированные объемы
    Next i

End Sub
[/vba]
[moder]А файл-то где Ваш?


Сообщение отредактировал _Boroda_ - Вторник, 12.04.2016, 23:41
 
Ответить
СообщениеВсем привет! Помогите пожалуйста написать программу для решения задачи в Excel. Сама задача и ход ее решения прописан ниже. Заранее признателен.

Исходные данные:
5 поставщиков (A, B, C, D, E) которые предлагают разный объем товара по разной цене.
Нужно обеспечить покрытие спроса (Спрос = 65 единиц) по минимальной цене.
Дополнительное условие: все поставщики продадут свой товар по единой цене, которая будет равна цене того поставщика предложение которого станет "замыкающим" при покрытии спроса.


1. Сортируем поставщиков по заявленной цене от меньшей к большей


2. Находим такой набор поставщиков, который будет покрывать спрос (65 единиц)
C = 30 < 65 - условие не выполнено
C+A = 30+20 = 50 < 65 - условие не выполнено
C+A+D = 30+20+15 = 65 = 65 - условие выполнено

3. Выводим данные поставщиков которые "сыграли" в новую таблицу и находим "замыкающее" предложение


4. Рассчитываем выручку каждого поставщика, с учетом того, что "замыкаюшим" стал поставщик "D" с заявленной ценой 3 за единицу товара.


Пока что, моей фантазии хватило на такое:
[vba]
Код
Sub bubble_1()

Dim arrName(5, 1) As String                         'задаю массив 5х1 с названиями поставщиков
Dim arrBubble(5, 2) As Long                         'задаю массив с числовыми значениями

For i = 1 To 5
        arrName(i, 1) = Worksheets("Лист1").Cells(i + 1, 1).Value          'заношу название поставщиков в массив arrName
        arrBubble(i, 1) = Worksheets("Лист1").Cells(i + 1, 2).Value         'заношу заявленные цены в массив arrBubble
        arrBubble(i, 2) = Worksheets("Лист1").Cells(i + 1, 3).Value         'заношу объемы товара в массив arrBubble
Next i

For j = 1 To 5
        For i = 1 To 5
          If arrBubble(i, 2) > arrBubble(i + 1, 2) Then            'Сортировка пузырьком по цене
                temp1 = arrBubble(i, 1)                    'Сортирую цены
                temp2 = arrBubble(i, 2)                    'Сортирую объемы
                temp3 = arrName(i, 1)                    'паралельно сортирую значения в массиве с названием
                arrBubble(i, 1) = arrBubble(i + 1, 1)
                arrBubble(i, 2) = arrBubble(i + 1, 2)
                arrName(i, 1) = arrName(i + 1, 1)
                arrBubble(i + 1, 1) = temp1
                arrBubble(i + 1, 2) = temp2
                arrName(i + 1, 1) = temp3
        End If
    Next i
Next j

For i = 1 To 5
        Worksheets("Лист2").Cells(i + 1, 1).Value = arrName(i, 1)    'вывожу на новы лист отсортированные названия
        Worksheets("Лист2").Cells(i + 1, 2).Value = arrBubble(i, 1)    'вывожу на новы лист отсортированные цены
        Worksheets("Лист2").Cells(i + 1, 3).Value = arrBubble(i, 2)    'вывожу на новы лист отсортированные объемы
    Next i

End Sub
[/vba]
[moder]А файл-то где Ваш?

Автор - MaxDyr
Дата добавления - 12.04.2016 в 23:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка данных массива и еще что-то (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!