Показать сообщение отдельно
  #94  
Старый 12.03.2013, 18:57
Аватар для Leto III
Свой человек
 
Регистрация: 14.10.2012
Сообщений: 285
Репутация: 22 [+/-]
Цитата:
Сообщение от sourse Посмотреть сообщение
Public Type trade
id As Integer
texta As String
textb As String
textc As String
textd As String
texte As String
End Type
Имелась в виду структура строки для таблицы? Тогда так понятнее:
Цитата:
Public Type TableRow
Id As Integer
City As String
Trade As String
Time As Date
Cost As Currency
End Type
Далее пользователь вводит в форму или читаем с листа (как - можно посмотреть с помощью макроса) не менее 10 таких TableRow, получаем массив типа TableRow:
Цитата:
Dim R() as TableRow
В цикле* обходим массив от 0 до конца, выводя данные из каждой i в ячейки таблицы:
Цитата:
For i = 0 To UBound(R)
'Тут нагугли сам, как в ячейки вставлять, что-то в таком роде:
Cells(2 + i, 1).Value = R(i).Id
Cells(2 + i, 2).Value = R(i).City
Cells(2 + i, 3).Value = R(i).Trade
Cells(2 + i, 4).Value = R(i).Time
Cells(2 + i, 5).Value = R(i).Cost
'2 + i это начиная с 3й строки если
'можешь попробовать так Range("A" & i & ":" & "E" & i) = R(i)
'для массивов это работало вроде
Next i
И потом рекурсивно посчитать суммарную стоимость из уже имеющегося R() как-то так:
Цитата:
Function MySum(j as Integer) as Currency
If j >= 0 Then
Return R(j).Cost + MySum(j - 1)
Else
Return 0
End If
End Sub

Dim sum as Currency
sum = MySum(UBound(R))
Среднее арифметическое:
Цитата:
Dim avg as Currency
avg = sum / UBound(R)
*NB: Цикл по-идее лишний - вывод в ячейки можно прямо в MySum делать, но так понятнее должно быть
__________________
Травить детей — это жестоко. Но ведь что-нибудь надо же с ними делать!

Последний раз редактировалось Leto III; 12.03.2013 в 19:01.
Ответить с цитированием