Страница: 1 |
|
Вопрос: Помогите плиз редактировать макрос!
|
Добавлено: 27.04.10 09:37
|
|
Автор вопроса: tropicana
|
Добрый день! Может у кого есть время и желание. Есть задача и макрос, в задаче 3 смены, в макросе 2 смены. Надо исправить или может написать по новой. Спасибо заранее всем кто сможет помочь. Мой адрес sveta-ya.82@bk.ru.
Задание.
На склад из цеха в течение 3-х смен поступают готовые изделия 7-ми наименований, а затем отгружаются заказчиками.
Написать программу на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран:
исходные данные в виде таблицы, где перечислены наименования изделий, поступивших или отгруженных в течение каждой смены;
количество изделий, поступивших в течение каждой смены;
стоимость всех отгруженных изделий в каждой смене;
стоимость всех оставшихся изделий к окончанию 2-ей смены;
наименование изделия наименьшего спроса.
Макрос.
Sub Расчитать()
'Сначала объявляем переменные, используемые в программе
'стоимость отгрузки изделий 1ой и 2ой смены
Dim cena(7, 2) As Double
'количество принятых изделий каждого вида
Dim kollp(7, 2) As Integer
'количество отгруженных изделий каждого вида
Dim kollo(7, 2) As Integer
'стоимость оставшихся изделий после смены
Dim zar(7, 2) As Double
'количество оставшихся изделий после 1 и 2 смены
Dim koll_p(7, 2) As Integer
'стоимость отгруженных изделий
Dim koll_o(7, 2) As Double
'количество оставшихся изделий к концу 2 смены
Dim koll_ost(7) As Integer
'стоимость всех отгруженных изделий 1 и 2 смены
Dim koll_all(7, 2) As Double
'стоимость всех оставшихся изделий к окончанию 2 смены
Dim zar_all(7, 2) As Double
'наименование изделия меньшего спроса
Dim izd As Integer
'счетчик циклов
Dim i As Integer, j As Integer
'Далее всем переменным присваивается нулевое значение
For i = 1 To 7
For j = 1 To 2
cena(i, j) = 0
Next j
Next i
For i = 1 To 7
For j = 1 To 2
kollp(i, j) = 0
Next j
Next i
For i = 1 To 7
For j = 1 To 2
kollo(i, j) = 0
Next j
Next i
'В этом фрагменте кода происходит считывание начальных данных с листа "Нач_д"
Sheets("Нач_д").Select
'вводим цену
For i = 1 To 7
For j = 1 To 2
cena(i, j) = Cells(6 + i, 7)
Next j
Next i
' забиваем количество поступившего
For j = 1 To 2
For i = 1 To 7
kollp(i, j) = Cells(6 + i, 1 + j + j)
Next i
Next j
' забиваем количество отгруженного
For j = 1 To 2
For i = 1 To 7
kollo(i, j) = Cells(6 + i, 2 + j + j)
Next i
Next j
'Далее на листе "Результат" в ячейку с определенным номером вводится ее название
Sheets("Результат").Select
' 1 смена
Sheets("Результат").Cells(2, 4) = "1 смена"
Sheets("Результат").Cells(4, 2) = "Наименование изделия"
Sheets("Результат").Cells(6, 2) = "болт"
Sheets("Результат").Cells(7, 2) = "гайка"
Sheets("Результат").Cells(8, 2) = "шуруп"
Sheets("Результат").Cells(9, 2) = "отвертка"
Sheets("Результат").Cells(10, 2) = "молоток"
Sheets("Результат").Cells(11, 2) = "гвоздь"
Sheets("Результат").Cells(12, 2) = "шайба"
Sheets("Результат").Cells(4, 3) = "Изделий поступило"
Sheets("Результат").Cells(4, 4) = "Изделий отгружено"
Sheets("Результат").Cells(4, 5) = "Стоимость изделий"
Sheets("Результат").Cells(4, 6) = "Стоимость отгруженных изделий"
Sheets("Результат").Cells(4, 7) = "Осталось изделий после 1ой смены"
Sheets("Результат").Cells(4, 8) = "Стоимость оставшихся изделий"
' 2 смена
Sheets("Результат").Cells(15, 4) = "2 смена"
Sheets("Результат").Cells(17, 2) = "Наименование изделий"
Sheets("Результат").Cells(19, 2) = "болт"
Sheets("Результат").Cells(20, 2) = "гайка"
Sheets("Результат").Cells(21, 2) = "шуруп"
Sheets("Результат").Cells(22, 2) = "отвертка"
Sheets("Результат").Cells(23, 2) = "молоток"
Sheets("Результат").Cells(24, 2) = "гвоздь"
Sheets("Результат").Cells(25, 2) = "шайба"
Sheets("Результат").Cells(17, 3) = "Изделий поступило"
Sheets("Результат").Cells(17, 4) = "Изделий отгружено"
Sheets("Результат").Cells(17, 5) = "Стоимость изделий"
Sheets("Результат").Cells(17, 6) = "Стоимость отгруженных изделий"
Sheets("Результат").Cells(17, 7) = "Осталось изделий после 2х смен"
Sheets("Результат").Cells(17, 8) = "Стоимость оставшихся изделий"
Sheets("Результат").Cells(28, 2) = "Стоимость всех отгруженных изделий 1 смены"
Sheets("Результат").Cells(29, 2) = "Стоимость всех отгруженных изделий 2 смены"
Sheets("Результат").Cells(30, 2) = "Стоимость всех оставшихся изделий к окончанию 2 смены"
Sheets("Результат").Cells(31, 2) = "Изделие пользующиеся наименьшим спросом"
'В этом фрагменте происходит подсчет и вывод на рабочий лист всех необходимых данных
For i = 1 To 7
For j = 1 To 2
'Вывод на лист "Результат" количества погруженных и отгруженных изделий, а так же их цены
Sheets("результат").Cells(5 + i + (j - 1) * 13, 5) = cena(i, j)
Sheets("результат").Cells(5 + i + (j - 1) * 13, 3) = kollp(i, j)
Sheets("результат").Cells(5 + i + (j - 1) * 13, 4) = kollo(i, j)
'Подсчет и вывод на рабочий лист стоимости отгруженных изделий
koll_o(i, j) = cena(i, j) * kollo(i, j)
Sheets("результат").Cells(5 + i + (j - 1) * 13, 6) = koll_o(i, j)
'Подсчет и вывод на рабочий лист количества оставшихся изделий после 1 смены и к концу 2 смены
koll_p(i, 1) = kollp(i, 1) - kollo(i, 1)
Sheets("результат").Cells(5 + i + (1 - 1) * 13, 7) = koll_p(i, 1)
koll_p(i, 2) = kollp(i, 2) - kollo(i, 2) + koll_p(i, 1)
Sheets("результат").Cells(5 + i + (2 - 1) * 13, 7) = koll_p(i, 2)
'Находим стоимость оставшихся изделий после 1 и 2 смены
zar(i, j) = koll_p(i, j) * cena(i, j)
Sheets("результат").Cells(5 + i + (j - 1) * 13, 8) = zar(i, j)
'Находим стоимость всех отгруженных изделий 1 и 2 смены
koll_all(7, j) = koll_all(7, j) + cena(i, j) * kollo(i, j)
Sheets("результат").Cells(27 + j, 6) = koll_all(7, j)
'Высчитываем общую стоимость оставшихся изделий к концу 2 смены
zar_all(7, j) = zar_all(7, j) + koll_p(i, j) * cena(i, j)
Sheets("результат").Cells(30, 6) = zar_all(7, j)
Next j
Next i
'Здесь описан алгоритм сравнения изделий по наименьшему спросу
izd = kollo(1, 1)
For i = 1 To 7
For j = 1 To 2
If kollo(i, j) < izd Then
izd = kollo(i, j)
Sheets("Результат").Cells(31, 6) = Sheets("Результат").Cells(5 + i + (j - 1) * 13, 2)
End If
Next j
Next i
End Sub
Ответить
|
Номер ответа: 1 Автор ответа: Jasmin
Вопросов: 23 Ответов: 417
|
Профиль | | #1
|
Добавлено: 27.04.10 14:57
|
- Sub Расчитать3()
-
- Dim cena(7, 3) As Double
- Dim kollp(7, 3) As Integer
- Dim kollo(7, 3) As Integer
- Dim zar(7, 3) As Double
- Dim koll_p(7, 3) As Integer
- Dim koll_o(7, 3) As Double
- Dim koll_ost(7) As Integer
- Dim koll_all(7, 3) As Double
- Dim zar_all(7, 3) As Double
- Dim izd As Integer
- Dim i As Integer, j As Integer
-
- Dim MySheetResultName As String
-
- MySheetResultName = "Результат"
-
- For i = 1 To 7
- For j = 1 To 3
- cena(i, j) = 0
- kollp(i, j) = 0
- kollo(i, j) = 0
- Next j
- Next i
-
- Sheets("Нач_д").Select
- For i = 1 To 7
- For j = 1 To 3
-
- cena(i, j) = Cells(6 + i, 9)
-
- kollp(i, j) = Cells(6 + i, 1 + j + j)
-
- kollo(i, j) = Cells(6 + i, 2 + j + j)
- Next j
- Next i
-
-
- Sheets(MySheetResultName).Select
- For j = 0 To 13 * 2 Step 13
-
- Sheets(MySheetResultName).Cells(2 + j, 4) = j / 13 + 1 & " смена"
- Sheets(MySheetResultName).Cells(4 + j, 2) = "Наименование изделия"
- Sheets(MySheetResultName).Cells(6 + j, 2) = "болт"
- Sheets(MySheetResultName).Cells(7 + j, 2) = "гайка"
- Sheets(MySheetResultName).Cells(8 + j, 2) = "шуруп"
- Sheets(MySheetResultName).Cells(9 + j, 2) = "отвертка"
- Sheets(MySheetResultName).Cells(10 + j, 2) = "молоток"
- Sheets(MySheetResultName).Cells(11 + j, 2) = "гвоздь"
- Sheets(MySheetResultName).Cells(12 + j, 2) = "шайба"
- Sheets(MySheetResultName).Cells(4 + j, 3) = "Изделий поступило"
- Sheets(MySheetResultName).Cells(4 + j, 4) = "Изделий отгружено"
- Sheets(MySheetResultName).Cells(4 + j, 5) = "Стоимость изделий"
- Sheets(MySheetResultName).Cells(4 + j, 6) = "Стоимость отгруженных изделий"
- Sheets(MySheetResultName).Cells(4 + j, 7) = "Осталось изделий после " & j / 13 + 1 & " смены"
- Sheets(MySheetResultName).Cells(4 + j, 8) = "Стоимость оставшихся изделий"
- Next j
-
- Sheets(MySheetResultName).Cells(41, 2) = "Стоимость всех отгруженных изделий 1 смены"
- Sheets(MySheetResultName).Cells(42, 2) = "Стоимость всех отгруженных изделий 2 смены"
- Sheets(MySheetResultName).Cells(43, 2) = "Стоимость всех отгруженных изделий 3 смены"
- Sheets(MySheetResultName).Cells(44, 2) = "Стоимость всех оставшихся изделий к окончанию 2 смены"
- Sheets(MySheetResultName).Cells(45, 2) = "Стоимость всех оставшихся изделий к окончанию 3 смены"
- Sheets(MySheetResultName).Cells(46, 2) = "Изделие пользующиеся наименьшим спросом"
-
- For i = 1 To 7
- For j = 1 To 3
-
- Sheets(MySheetResultName).Cells(5 + i + (j - 1) * 13, 5) = cena(i, j)
- Sheets(MySheetResultName).Cells(5 + i + (j - 1) * 13, 3) = kollp(i, j)
- Sheets(MySheetResultName).Cells(5 + i + (j - 1) * 13, 4) = kollo(i, j)
-
- koll_o(i, j) = cena(i, j) * kollo(i, j)
- Sheets(MySheetResultName).Cells(5 + i + (j - 1) * 13, 6) = koll_o(i, j)
-
- koll_p(i, 1) = kollp(i, 1) - kollo(i, 1)
- Sheets(MySheetResultName).Cells(5 + i + (1 - 1) * 13, 7) = koll_p(i, 1)
- koll_p(i, 2) = kollp(i, 2) - kollo(i, 2) + koll_p(i, 1)
- Sheets(MySheetResultName).Cells(5 + i + (2 - 1) * 13, 7) = koll_p(i, 2)
- koll_p(i, 3) = kollp(i, 3) - kollo(i, 3) + koll_p(i, 2)
- Sheets(MySheetResultName).Cells(5 + i + (3 - 1) * 13, 7) = koll_p(i, 3)
-
- zar(i, j) = koll_p(i, j) * cena(i, j)
- Sheets(MySheetResultName).Cells(5 + i + (j - 1) * 13, 8) = zar(i, j)
- Next j
- Next i
-
- izar_all = 41
- For i = 6 To 32 Step 13
-
- Sheets(MySheetResultName).Cells(izar_all, 6).Formula = "=SUM(F" & i & ":F" & i + 6 & ")"
- izar_all = izar_all + 1
- Next i
-
- Sheets(MySheetResultName).Cells(44, 6).Formula = "=SUM(H19:H25)"
- Sheets(MySheetResultName).Cells(45, 6).Formula = "=SUM(H32:H38)"
-
- izd = kollo(1, 1)
- For i = 1 To 7
- For j = 1 To 3
- If kollo(i, j) < izd Then
- izd = kollo(i, j)
- Sheets(MySheetResultName).Cells(46, 6) = Sheets(MySheetResultName).Cells(5 + i + (j - 1) * 13, 2)
- End If
- Next j
- Next i
-
- End Sub
Еще можно это сделать формулами самого листа.
Ответить
|
Страница: 1 |
Поиск по форуму