Более сложный цикл усреднения Excel

#vb.net #visual-studio #visual-studio-2010

#vb.net #visual-studio #visual-studio-2010

Вопрос:

Хорошо, сначала я попытаюсь объяснить это как можно лучше…

Моя программа создает динамическую таблицу информации, я пытаюсь упростить часть информации, используя цикл. Чтобы упростить задачу, я просто скажу, что таблица начинается с A1 и переходит в (columnindex:rowindex * 6) (эта часть уже выполнена).

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

Итак, среднее (A1: A(rowindex * 6)), среднее (B1: B(rowindex * 6)) и так далее вплоть до среднего ((columnindex) 1:columnindex(rowindex * 6)

Теперь сложная часть….

Начиная с ((rowindex*6) 5)…. Итак, 5 строк ниже приведенной выше таблицы, начиная с столбца A….

Продолжайте…

 Average(A), Average(B)
Average(C), Average(D)
Average(E), Average(F)
 

И так далее, пока не будут перечислены все столбцы…

Где я изо всех сил пытаюсь преобразовать columnindex в соответствующие буквы, поскольку всегда есть 34-40 столбцов

Я знаю, что хотел бы сделать что-то вроде:

 i = 5

for x = 1 to x = columnindex 

    dim Num2Let1 as string = a=1, b=2, c=3, so on..
    dim Num2Let2 as string = a=1, b=2, c=3, so on..

    xlWorkSheet2.Cells((rowindex*6) i), 1)  = "Average(" amp; Num2Let1.ToString amp; cstr(1) amp; ":" amp; Num2Let1.ToString amp; cstr(rowindex*6))
    xlWorkSheet2.Cells((rowindex*6) i), 2)  = "Average(" amp; Num2Let2.ToString amp; cstr(1) amp; ":" amp; Num2Let2.ToString amp; cstr(rowindex*6))

    i = i   1
    x = x   2

    loop
next
 

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

Спасибо

Ответ №1:

Вот функция, которая выдаст вам имя столбца на основе его индекса:

 Private Function GetExcelColumnName(columnNumber As Integer) As String
    Dim col As Integer = columnNumber
    Dim columnName As String = ""
    Dim num As Integer

    While col > 0
        num = (col - 1) Mod 26
        columnName = Convert.ToChar(65   num).ToString() amp; columnName
        col = CInt((col - num)  26)
    End While

    Return columnName
End Function
 

Это должно помочь вам создать средние строки функций.

Комментарии:

1. Рад помочь, я сам нуждался в этом несколько раз … это даже в моем наборе инструментов 🙂