No.3ベストアンサー
- 回答日時:
こんにちは。
>あらかじめ指定したA2とB3とE5のセルの値のうち最小の値を持つセルの値とアドレスを取得する記述を教えてください。
本来は、「あらかじめ指定したセル」に、きちんとした法則があれば、関数で可能なような気がします。たぶん、「あらかじめ指定したセル」は、名前定義を行うつもりなのでしょうね。だから、以下のSelection は、仮に、ということにしてください。
'--------------------------------------------
Sub FindMinimum()
Dim myRng As Range
Dim c As Range
Dim minVal As Double
Dim myFirstAddress As String
Dim buf As String
If TypeName(Selection) <> "Range" Then Exit Sub
Set myRng = Selection '名前定義の場合は、ここから
If WorksheetFunction.Count(myRng) = 0 Then MsgBox "範囲を指定してください。", vbCritical: Exit Sub
minVal = WorksheetFunction.Min(myRng)
Set r = myRng.Find(minVal)
With myRng
Set c = .Find(What:=minVal, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
myFirstAddress = c.Address
Do
buf = buf & ", " & c.Address
Set c = .FindNext(c)
Loop Until c Is Nothing Or c.Address = myFirstAddress
End If
End With
MsgBox minVal & ": " & Mid$(buf, 2), , "最小値とアドレス"
Set myRng = Nothing
End Sub
No.2
- 回答日時:
Sub test()
Dim sh As Worksheet
Set sh = Worksheets("Sheet1")
x = Application.WorksheetFunction.Min(sh.Range("a1"), sh.Range("c3"), sh.Range("d5"))
MsgBox x
End Sub
をご参考に。
セル指定のニーズやパターンが質問から良くわからないが、プログラムの中に入れられるなら上記。
Cells(i,j)の形ででRangeを相対化できます。
大変参考になりました。最小値はこれで取得できましたが、アドレスが取得できなかったので、BLUEPIXYさんの構文と組み合わせてみてやってみます。
ありがとうございました。
No.1
- 回答日時:
CTRL+で飛び飛びの範囲を指定してマクロを呼び出すとして
概ね、こんな感じ
Public Sub Sample()
Dim x As Range, min As Range, minValue
Dim wk As String, a, i
'minValue は、指定した範囲の最小値、空白セルが有る場合は0
minValue = Application.WorksheetFunction.min(Selection)
wk = ""
For Each x In Selection
If minValue = x.Value Then
wk = wk & x.Address & "," '同一の最小値が有る場合があるのでアドレスを集める
End If
Next
If wk <> "" Then
wk = Left(wk, Len(wk) - 1) '最後のカンマを取り除く
End If
a = Split(wk, ",") 'アドレスの集まりを配列にする
For i = 0 To UBound(a)
Debug.Print a(i) '配列で取り出す(テストプリント)
Next
End Sub
大変に長い構文例を作成していただきありがとうございました。
私の質問がわかりにくかったと思いますが、最小値のアドレスは取得できましたが、その値が取得できませんでした。
この構文を参考に研究してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 13:13
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) エクセルVBA 任意のセルの選択時、指定のセルの値を表示 1 2023/04/21 08:13
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Excel(エクセル) セルを数式で指定する方法 5 2022/04/13 16:55
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
特定の色のついたセルを削除
-
EXCEL VBA 文中の書式ごと複写...
-
Excelで空白セル直前のセルデー...
-
【VBA】写真の貼り付けコードが...
-
C# DataGridViewで複数選択した...
-
HTMLのテーブルのセルの値をPHP...
-
VBA:日付を配列に入れ別セルに...
-
VBA にて、条件付き書式で背景...
-
Excel UserForm の表示位置
-
下記のマクロの説明(意味)を...
-
データグリッドビューの結合セ...
-
マクロ初心者です。 マクロで範...
-
【Excel VBA】一番右端セルまで...
-
VBA 複数条件の分岐処理の上手...
-
VB.netでのExcelデータの読み込み
-
EXCELのフォーム上でリアルタイ...
-
エクセルVBAで、セル内のテキス...
-
excelで結合セルの場合にエラー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
【Excel VBA】一番右端セルまで...
-
エクセルの合計を自動で表示さ...
-
【VBA】【ユーザーフォーム_Lis...
-
EXCEL VBA 文中の書式ごと複写...
-
下記のマクロの説明(意味)を...
-
Excel VBAでCheckboxの名前を変...
-
【VBA】写真の貼り付けコードが...
-
特定の色のついたセルを削除
-
VBA:日付を配列に入れ別セルに...
-
VBA にて、条件付き書式で背景...
-
DataGridViewのフォーカス遷移...
-
関数の引数でrangeを指定したとき
-
入力規則のリスト選択
-
DataGridViewで指定したセルの...
-
VBAでユーザーフォームにセル値...
-
複数指定セルの可視セルのみを...
おすすめ情報