|
▼γ さん:
>前提が違っているかも知れないが、使えるなら使ってみてください。
>
>Sub test()
> Dim rng As Range
> Dim a As Range
> Dim rng1 As Range
> Dim lastRow As Long
>
> Set rng1 = Range("A1").End(xlDown).Offset(3)
> lastRow = Cells(Rows.Count, 1).End(xlUp).Row
> Set rng = Range(rng1, Cells(lastRow, 1)) _
> .Offset(0, 2).SpecialCells(xlCellTypeConstants)
>
> For Each a In rng.Areas
> With a
> .Cells(1).Offset(.Rows.Count).Value = WorksheetFunction.Sum(.Cells)
> End With
> Next
>End Sub
>
>Sub test2()
> Dim rng As Range
> Dim lastRow As Long
> Dim k As Long
>
> lastRow = Cells(Rows.Count, 1).End(xlUp).Row
> Set rng = Range("A1", Cells(lastRow, 1)) _
> .Offset(0, 2).SpecialCells(xlCellTypeConstants)
>
> For k = 2 To rng.Areas.Count
> With rng.Areas(k)
> .Cells(1).Offset(.Rows.Count).Formula = _
> "=Sum(" & .Cells.Address(False, False) & ")"
> End With
> Next
>End Sub
>
>レイアウトの提示がなかったのは残念。
>以下のような疑問が生じないように求めたものだが、
>人の言うことに耳を貸さない方のようです。
>・A列には店舗名が重複して入力されているものと仮定
>・一行目だけのデータではないものと仮定(Set rng1 = Range("A1").End(xlDown).Offset(3)が不適当の懼れ)
>・A店舗だけされている「品目集計」の意味が説明されなかった。
>
>そもそも、特別なことがなぜ最初のA店舗にだけ発生しているのか。
>汎用性を持たせる必要はないのか。
>
>アドホックな対応をするなら、コード対応ではなく、ワークシートを直せばよいのではないか。
>もし手作業でSUM関数を使った計算式がA店舗の合計値セルに埋められているなら、
>A店舗を特別視する必要はないはず。提示のロジックで対応可能だったはず。
>
>なお、結果数値を書き込む方式だと、データの一部変更などがあって
>処理をやりなおす必要がもし出てきた場合には、再処理ができない。
>結果が定数値とみなされて計算結果が変わってくる。
>だから、式を埋め込んだ方がよいかもしれない。
>
>なお、前のスレッドであったマナさんの助言にもトライされたほうがよいと
>思います。
ご教授大変ありがとうございました。
とても役に立ちました。私のVBAはまだ未熟です。
とても感謝します。 ありがとうございました。
|
|