
エクセルに入力されている数値表です。
数行ごとに1行の空白行があり、それをブロックと呼ぶ事にします。
そのブロックのBF列にある数値をブロックごとに集計し、そのブロックの最大値の割合を出す良い方法(関数やマクロ)を教えていただけないでしょうか。計算値はBF列、BG列でなくても構いません。よろしくお願いします。
BF列
5
7→最大値
2
4
6
6
(空白行)計30、7/30→(この「30、0.233」がほしい)
4
3
5
6→最大値
(空白行)計18、6/18→(この「18、0.333」がほしい)
No.4ベストアンサー
- 回答日時:
No.2 の補足
・BF列にタイトル行などがあった場合は「For 対象行 = 1 To 最終行」の「1」を適当に変更して下さい。
・また先頭が空欄だったり、2行以上空欄が続くことが有るなら以下のようにしてください。
(最終行を「1」加えてループ後の処理を不要にもしています)
Sub Sample()
Dim 合計 As Variant
Dim 最大 As Variant
Dim 対象行 As Long
Dim 最終行 As Long
最終行 = Cells(Rows.Count, 58).End(xlUp).Row + 1
For 対象行 = 1 To 最終行
If Cells(対象行, 58).Value = "" Then
If 合計 <> 0 Then
Cells(対象行, 58).Value = 合計
Cells(対象行, 59).Value = 最大 / 合計
最大 = 0
合計 = 0
End If
Else
合計 = 合計 + Cells(対象行, 58).Value
If 最大 < Cells(対象行, 58).Value Then 最大 = Cells(対象行, 58).Value
End If
Next
End Sub
No.3
- 回答日時:
一例です。
BF・BGに結果を出してます。
Sub try()
Dim r As Range
For Each r In Range("BF1", Cells(Rows.Count, "BF").End(xlUp)).SpecialCells(xlCellTypeConstants, xlNumbers).Areas
With WorksheetFunction
r.Offset(r.Rows.Count).Resize(1, 2).Value = _
Array(.Sum(r), Int(.Max(r) / .Sum(r) * 1000) / 1000)
End With
Next
End Sub
ありがとうございます。求める結果が得られました。申し訳ありませんが、先に御回答いただいた方をベストアンサーとさせていただきます。
No.2
- 回答日時:
マクロでしたらこんな感じでしょうか?
Sub Sample()
Dim 合計 As Variant
Dim 最大 As Variant
Dim 対象行 As Long
Dim 最終行 As Long
最終行 = Cells(Rows.Count, 58).End(xlUp).Row
For 対象行 = 1 To 最終行
If Cells(対象行, 58).Value = "" Then
Cells(対象行, 58).Value = 合計
Cells(対象行, 59).Value = 最大 / 合計
最大 = 0
合計 = 0
Else
合計 = 合計 + Cells(対象行, 58).Value
If 最大 < Cells(対象行, 58).Value Then 最大 = Cells(対象行, 58).Value
End If
Next
Cells(対象行, 58).Value = 合計
Cells(対象行, 59).Value = 最大 / 合計
End Sub
御回答ありがとうございます。以下のメッセージで中断します。再度アドバイスいただけないでしょうか。
実行時エラー'13':
型が一致しません。
合計 = 合計 + Cells(対象行, 58).Value(→この部分が黄色で示されています)
No.1
- 回答日時:
一つずつROWS関数とMAX関数にセルの範囲を設定すれば良いと思うんだ。
1000個の範囲があっても、1時間くらいあれば終わるだろ?
Shiftキーを押しながら↓キーを押せば、連続した範囲を選択できる。
(Shift+↓)
Ctrlキーを押しながら↓キーを押すと、アクティブだったセルと同じ状態(空か空でないか)の最後のセルまでジャンプする。
(Ctrl+↓)
この組み合わせを使えば、値が入力されている範囲を一瞬で指定できる。
(Shift+Ctrl+↓)
がんばれ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのフィルター後の一番上の...
-
excel 小さすぎて見えないセル...
-
エクセル 上下で列幅を変えるには
-
[EXCEL]ボタン押す→時刻が表に...
-
電話番号の入力方式が違うデー...
-
【マクロ】book1からbook2への...
-
エクセルで、ポインタのある行...
-
Excel 時刻の並び替え
-
EXCELでセルの数値をすべて小数...
-
サイズの違うセル 並べ変え
-
Excel グラフのプロットからデ...
-
エクセル 時間の表示形式AM/PM...
-
エクセル2016で時間を入力して...
-
AのセルとB行を比較して、一致...
-
チェックボックスをクリックし...
-
エクセルVBA:データ端に画...
-
結合されたセルをプルダウンの...
-
excelのデータで色つき行の抽出...
-
Excelで非表示のセルをとばして...
-
このような複雑な表をワードで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 上下で列幅を変えるには
-
【Excel関数】UNIQUE関数で"0"...
-
Excel グラフのプロットからデ...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセル マクロで数値が変っ...
-
excel 小さすぎて見えないセル...
-
結合されたセルをプルダウンの...
-
特定の文字がある行以外を削除...
-
Excelのフィルター後の一番上の...
-
エクセル マクロ オートフィ...
-
Excelで非表示のセルをとばして...
-
エクセルで特定の文字列が入っ...
-
罫線の斜線を自動で引くマクロ
-
A1に入力された文字列と同じ文...
-
エクセルVBA 最終行を選んで並...
-
EXCELで最後の行を固定
-
Excel ウインドウ枠の固定をす...
-
Excel 時刻の並び替え
-
電話番号の入力方式が違うデー...
-
VBAで色の付いているセルの行削除
おすすめ情報