1

それぞれが大まかに次のように見える複数のスプレッドシートがあります。

ここに画像の説明を入力

行 1 の各 SPEAKER HEADERS を調べて、対応するアンケートの質問に関連付けられているスコアを要約する方法を見つけようとしています (「コンテンツは良かったですか? SPEAKER は適切でしたか? 配信は何が良かったですか?」)色別にまとめました。

これを自動的に行う賢い方法は思いつきません。

次のように、結合セルの RANGE SPAN を取得できます。

  For Each Cell In src_sheet.UsedRange.Cells
        If Cell.Row = 1 And IsEmpty(Cell) = False Then
            MsgBox Cell.MergeArea.Address
        End If
    Next

次に、アドレスによって提供される範囲を反復処理し、その範囲より下のすべての行の数値を取得する必要があります。

たとえば、現在のマクロを実行すると、次のようになります。

ここに画像の説明を入力

$C$1:$E$1FROM C1 から E1 までの for ループを実行して、その下の行のすべての数値を平均化する必要があります。 これを行う方法がわかりません。

使用したものすべてを含めて選択を拡張することを考えていました

これを行うより良い方法はありますか?

これは、私が現在行っている悲惨なほど悪い方法です (Excel に慣れていないため、これを非常に誇りに思っています)。

    For Each Cell In src_sheet.UsedRange.Cells
        If Cell.Row = 1 And IsEmpty(Cell) = False Then
            Set rng = Range(Cell.MergeArea.Address) 'Equal to the Address of the Merged Area
            startLetter = Mid(rng.Address, 2, 1)  'Gets letter from MergeArea Address
            endLetter = Mid(rng.Address, 7, 1) 'Gets letter from MergeArea Address

            On Error GoTo ErrHandler:
                Set superRange = Range(startLetter & ":" & endLetter)

ErrHandler:
    endLetter = startLetter
    Set superRange = Range(startLetter & ":" & endLetter)
Resume Next

            superRange.Select
            MsgBox Application.Average(Selection) 
4

1 に答える 1