それぞれが大まかに次のように見える複数のスプレッドシートがあります。
行 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$1
FROM 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)