
自分でいろいろ調べてみたのですが、ちょっとわからなくて質問させて頂きます。
VBAのコードにMINとMAX関数を入れて日付の最大値と最小値を求めたいのですがうまくいきません。
処理の初めに、対象の列には書式をYYYY/MM/DDの書式にし、そのあと最大値と最小値を変数に入れて求めています。
値を入れる変数はデータ型にしています。
表には2008/3/12など表示されているのに、MAX,MINともに変数の値は0でした。
どうしてこうなるのか見当もつきません。
よろしければ、返答お願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
例データ
2008/3/14
2007/12/2
2007/12/12
2008/4/1
ーー
Sub test01()
mx = Application.Max(Range("a1:A7"))
MsgBox mx
Range("c1") = mx
mn = Application.Min(Range("a1:A7"))
MsgBox mn
Range("c2") = mn
End Sub
ーー
C列の書式を日付にする
結果
2008/4/1
2007/12/2
書式を標準にすると
39539
39418
とセルの値は、正整数です。日付けシリアル値を知っていますか。
ーー
上記と質問者のコードと比べておかしいところは無いですか。質問者のコードを書かないのも、そもそもおかしい。
ーー
プログラムがうまく実行しないとき
(1)プログラム・コードがおかしい
(2)処理するデータが意図したものと違う
とあり、(2)が良く忘れられている。
日付はその点で要注意なのは常識です。
質問者は日付と思っているセルの値がおかしい。
日付でも正整数の最大値を求めるだけだから何も普通の数と変わらない。
ーー
その面から当たってください。
その中には=Dastevalue(range("A1"))
をやってその結果を使ってみるとか。
ーー
参考に
前もって、A1セルの書式を文字列
A2のセルの書式を文字列にする
A1に2008/3/1
A2にも2008/3/1
Sub test02()
Range("A1").NumberFormat = "yyyy年mm月dd日"
Range("A2") = DateValue(Range("A2"))
Range("A2").NumberFormat = "yyyy年mm月dd日"
End Sub
を実行
結果
2008/3/1
2008年03月02日
こういう風に結果に差が出る。値はA1は変えあらず文字列。
A2は文字列ー>数値であるが。
No.2
- 回答日時:
>値を入れる変数はデータ型にしています。
は「デート型」の誤りでよいですか?
ちょっと実験してみましょう。新規シートのA1:A20に日付データを入力し、以下のマクロを実行してみます。私のPCでは最大の日付と最小日付が正しく表示されました。
Sub Macro3()
Dim a, b As Date
a = Application.Max(Range("A1:A20"))
b = Application.Min(Range("A1:A20"))
MsgBox Format(a, "yyyy/m/d")
MsgBox Format(b, "yyyy/m/d")
End Sub
>どうしてこうなるのか見当もつきません。
コードを見なければなんとも言えませんが、参照しているRangeが適切ではない(処理が複数シートにまたがっているようなとき、意図しないシートを参照している)とかはありませんか?
もし複数シートにまたがって処理しているなら
Application.Max(Sheets("Sheet1").Range("A1:A20"))
のようにシートを明示するとよいです。
お早い回答ありがとうございます。
上記のコードで確認したところ数値は入っていました。
しかし、私のPCではうまくいったのですが、もう一台でテストしなければならないので少し試してみます。
参考にですが、コードは
Dim A As Range
Set A = Range(Cells(4, 4), Cells(30, 4))
A.NumberFormatLocal = "YYYY/MM/DD"
cntmin = Application.WorksheetFunction.Min(Range(Cells(4, 4), Cells(30, 4)))
cntmax = Application.WorksheetFunction.max(Range(Cells(4, 4), Cells(30, 4)))
です。
まだ知識が乏しい為、何か指摘あればよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) Excelのテーブルについて 6 2023/07/07 08:37
- Excel(エクセル) 列を挿入しても式の一部を固定するには 6 2023/05/31 21:57
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- 数学 高校数学について 関数y=-x^2+2x+c (xは0以上3以下)の最小値が-5であるときの定数cの 1 2022/10/01 09:52
- 数学 2*2の行列に対して固有値の最大実部を与えるkの値を求めたい 3 2022/11/08 16:26
- 数学 条件付き極値問題といわれる問題です。ラグランジュの乗数法 について、質問したいことがあります。 条件 3 2023/05/15 21:38
- Visual Basic(VBA) vba 最大値 条件分岐 4 2022/12/10 10:20
- 数学 数1 二次関数 関数 y=x^2-2x-1について、定義域が-1<x<2のとき、最大値最小値を求めよ 5 2023/06/06 12:00
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで文字列を数値に変換したい
Excel(エクセル)
-
MIN関数で空白セルを無視したいのですが
その他(Microsoft Office)
-
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
-
4
2つ以上の変数を比較して最大数を求めたい
Word(ワード)
-
5
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
特定の1列からもっとも古い日付を取得する方法について
Excel(エクセル)
-
8
B列の最終行までA列をオートフィル
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
風俗店へ行く前のご飯
-
彼女のことが好きすぎて彼女の...
-
エクセルの値を元に図形の色を...
-
検便についてです。 便は取れた...
-
イタリアから帰国する際、肉製...
-
精子に血が・・・
-
精液の落とし方を教えてください
-
最近、飲酒すると手のひらが真...
-
値が入っているときだけ計算結...
-
勃起する時って痛いんですか? ...
-
MIN関数で空白セルを無視したい...
-
納豆食べた後の尿の納豆臭は何故?
-
エクセルで空白セルを含む列の...
-
精子が黄色?
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
「Q.C. PASSED」とは?
-
足がまだら模様になります。ど...
-
鏡についてです。自分の体型を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
エクセルで空白セルを含む列の...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
ある範囲のセルから任意の値を...
おすすめ情報