No.7ベストアンサー
- 回答日時:
#4の補足について
>mに数値が編入されますが、Cellsはセルの位置と本には書いています。どうしてmに数値が入るのでしょうか?
私の悪い癖で、Valueを全て省いています。省くとValueと看做してくれる仕組みがあるからです。
m=Cells(i,"A").Value というプロパティを付け加えて考えてください。ほかにセルには書式やコメントや色々のものがある中で、「値」は表計算ソフトの歴史的にも(昔は文字にも色は付かなかった)、表計算は値から始まり、一番大事なデータです。
ついでに別件ですが、他のご回答の中に
>#4 のご回答のように総当りで見つける
と「総当り」という表現がありますが、そもそも最大値は全部の値を読まないと決まらないものです。関数などは、裏では比較や繰り返しをやっているはずだが、表には出していません。そういう繰り返しや比較などを隠した利器(関数やメッソッドなど)を使って進むのが、進歩なんですが、時には原始的な方法でやってみたいときが有ります。
No.6
- 回答日時:
Excel 2000 以前では VBA でワークシート関数を使う場合、最大 5461 の
配列(セルデータ)しか渡せません。(Excel2002以降は大丈夫)
# 詳しくは Microsoft のサイトで
したがって、A 列の最大値を VBA で求めるには、Excel のバージョンに
合わせた方法をとることになります。
・Excel2002、2003 をお使いの場合
Msgbox Application.Max(Range("A:A"))
・Excel2000 以前をお使いの場合
1)バージョン依存しない #4 のご回答のように総当りで見つける
2)1~5461行、5462~10923行のように要素数5461のブロックにわけて、
それぞれの MAX 関数の結果の中から、さらに MAX 関数で最大値を
求めることになります。
こう考えると結構面倒くさいので、#1 のご回答をオススメしたいと思い
ます。
No.5
- 回答日時:
#1の方が回答されている通り、ワークシート関数で十分です。
(2)を何が何でもマクロでというなら、VBAの中でそのままワークシート関数を使えばいい。
それがいやなら Find メソッドでどうぞ。
No.4
- 回答日時:
いろいろ難しい関数など使わないで、初心に帰り
A列の例で
Sub test01()
d = Range("A65536").End(xlUp).Row
m = Cells(1, "A")
For i = 2 To d
If Cells(i, "A") > m Then
m = Cells(i, "A")
mi = i
End If
Next i
MsgBox "最大値=" & m & " 行数=" & mi
Cells(mi, "B") = "○"
End Sub
この回答への補足
imogasiさんマクロ完璧でした、ありがとう御座います。
所で、このマクロで教えて欲しい所が有るのですが良ければ教えて下さい。
mに数値が編入されますが、Cellsはセルの位置と本には書いています。
どうしてmに数値が入るのでしょうか?
No.3
- 回答日時:
No.2です。
間違いがあったので訂正です。Dim m As Long
Dim myrng As Range
With Worksheets("Sheet1")
m = WorksheetFunction.Max(.Columns(1))
Set myrng = .Range("A:A").Find(What:=m, _
After:=.Range("A1"), LookIn:=xlFormulas, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, _
MatchByte:=False, SearchFormat:=False)
MsgBox myrng.Row
この回答への補足
M-SOFTさんマクロ回答ありがとう御座いました。
回答部分は上手い具合に動きましたが、他の部分で少し分からない
所が有るのでもし良ければ教えて下さい。
下記の要に、G17に関数を入れてカーソルを十字型にしてダブルクリック
したマクロですが、なんか冗長みたいですので1行で書けないでしょうか。?
------------------------------------
Range("G17").Formula = "=(F17-F16)/0.1"
Range("G17").Select
Selection.AutoFill Destination:=Range("G17:G93")
宜しくお願いします。
No.2
- 回答日時:
こんばんは。
マクロでA列の最大値の行数を所得する方法
Dim m As Long
Dim myrng As Range
m = WorksheetFunction.Max(Worksheets("Sheet1").Columns(1))
Set myrng = Worksheets("Sheet1").Range("A:A").Find(What:=m, _
After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, _
MatchByte:=False, SearchFormat:=False)
MsgBox myrng.Row
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) スプレットシートでA1~G1にデータが入っていて、 それを1列ずつ空けて表示する関数がわかる方いまし 4 2022/08/25 09:39
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Word2016でExcelデータを差込し...
-
【Excel VBA】CSV取込時、数字...
-
EXCELで2つのシートから一致し...
-
エクセルで電話番号にハイフン...
-
EXCELの列の幅
-
Excel 表の必要箇所だけを抜き...
-
エクセルでページ毎の計をつけ...
-
超初心者がマクロ集計をするこ...
-
エクセルで年齢別体重の平均
-
EXCELで不良率を出そうと思って...
-
エクセルの余白を0にしても列...
-
エクセルの複数ワークシートの...
-
Excelのセル内で規則に従った部...
-
エクセルの並べ変え
-
Excelのhperlink関数で作ったモ...
-
VBAで他のシートの特定の列を検...
-
エクセルで顧客リスト
-
【Excel VBA】データの最終行に...
-
Excel複数のファイルデータを一...
-
エクセルで表のある列を最初か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word2016でExcelデータを差込し...
-
【Excel VBA】CSV取込時、数字...
-
EXCELで2つのシートから一致し...
-
Excel 表の必要箇所だけを抜き...
-
EXCELの列の幅
-
エクセルで前年同日・前月同日...
-
エクセルでページ毎の計をつけ...
-
EXCEL2007で2つのシートのどっ...
-
excelの列がいっぱいになり列を...
-
エクセルで電話番号にハイフン...
-
エクセルVBAで複数列データを1...
-
EXCELで不良率を出そうと思って...
-
エクセルの複数ワークシートの...
-
エクセルの余白を0にしても列...
-
エクセルで縦線のいっぱい入っ...
-
Excelで奇数行を削除
-
ExcelのIF関数について
-
Excelのhperlink関数で作ったモ...
-
エクセル:最新データ12件で...
-
ピボットテーブル作成後、重複...
おすすめ情報