advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 13153 for 日付 (0.003 sec.)
[[20190816225627]]
#score: 2424
@digest: f7785fa51c2b0deb37144083d65af29f
@id: 80494
@mdate: 2019-08-17T04:42:19Z
@size: 5792
@type: text/plain
#keywords: ma11s (15241), 様日 (9482), 年) (7047), チポ (4714), ルチ (3785), ポス (3781), 日付 (3660), マル (3562), isdate (3404), 検出 (3013), mydate (1782), myrng (1655), 変動 (1579), シリ (1542), moug (1524), 「日 (1484), tmp (1366), ル値 (1222), 2019 (1203), 土) (1148), ル」 (1089), 付が (995), アル (960), る日 (900), 付で (867), worksheetfunction (859), に検 (840), 付と (836), 付の (752), buf (740), 特定 (736), リア (719)
『VBA MATCH関数で「日付」のセルを検出』(ma11s)
VBAで特定の日付を検出するのであれば WorksheetFunction.Match(CLng(CDate("2019/8/5")), Range("A1:A10"), 0) というような形でいいと思うのですが、 検索する日付が変動する場合、 「日付の入っているセル」はどのように検索すればいいでしょうか? .Findを使えば日付を文字列として扱えるので "*/*/*"のようなワイルドカードで検索ができると聞いたのですが、それと同時に 1..Findの場合全く同じ処理を2回実行したときにも結果が変わってしまうことがある 2..Findはすごく遅い 3.指定範囲を上から検索して一番初めに検出したセルを知りたい場合 .FindよりもMatch関数のほうが圧倒的におすすめ とも聞きました。 場合によっては1行目から10行目よりもずっと広範囲に検索することもあるので、 Math関数を利用して、 何らかの日付(シリアル値)が入っているセルは○行目にある という検索ができたらと考えました。 WorksheetFunction.Match(「日付が入っているセル」, Range("A1:A10"), 0)? < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- >WorksheetFunction.Match(「日付が入っているセル」, Range("A1:A10"), 0)? 必ずマッチする場合なら、それで問題ないと思いますが、何か不都合が起きたのですか? ※念のためですが、「日付が入っているセル」にValueプロパティは付けない様にしてください。 (半平太) 2019/08/16(金) 23:51 ---- すいません、 「日付が入っているセル」 というのは便宜上書いただけで、 「なんらかの日付が入っているセル」を探したいという意味で書いただけでした… 変動する日付が特定できないために どのような検索引数を指定すればいいのかわかっていません… (むしろ、変動する日付を特定するために探したいのです…) ややこしい表現で申し訳ないです (ma11s) 2019/08/17(土) 01:00 ---- おはようございます。 日付のセルを探したいという事でしたら、、順番にループして日付か判断されてみてはどうでしょうか? Option Explicit Sub てすと() Dim i As Long For i = 1 To Range("a" & Rows.Count).End(xlUp).Row If IsDate(Range("a" & i).Value) Then MsgBox "日付です" Else MsgBox "日付ではありません" End If Next End Sub (SoulMan) 2019/08/17(土) 09:04 ---- >「なんらかの日付が入っているセル」を探したいという意味で書いただけでした… そうでしたか、それは失礼しました。 これは難問ですね。 実のところ、Date型は厄介な型で、補足情報(※)が何も無い状態では、 お手軽且つ確実にヒットさせる方法はありません。 ※ 手入力データか、数式か、日付の表示形式がどう設定されているか、列幅が十分あるか、などの要因で 検索結果が違ってきます。 あと、「なんらかの日付」とは何かも定義しておく必要があります。 私は、シリアル値の入ったセルで、日付の書式にしているものを想定しますが、 人によっては、文字の「2000年1月1日」とか、文字の「1/1」だけでも日付と認めるかも知れません。 (半平太) 2019/08/17(土) 09:10 ---- >何らかの日付(シリアル値) 日付と数値の定義があいまいすぎると思いますけどね。 結構意味が無いと思われる。 何を持って日付と判断するのでしょうか? 普通に 12345 12345.67 と、数値を打って書式を日付にすれば日付ですし、 ただの0や1や2なども、書式を日付にすれば日付になります。 ひょっとしたら、書式をどちらかに変えられていたらとか考えると 夜も眠れなくなっちゃうかも・・・。(古い) (BJ) 2019/08/17(土) 10:48 ---- mougとマルチになってますね。 https://www.moug.net/faq/viewtopic.php?t=78532 (半平太) 2019/08/17(土) 11:22 ---- SoulMan様 日付以外のデータがとても日付とは思えない「リンゴ」「洋ナシ」等の文字列であるため、IsDate関数をForで回して思い通りの結果が得られました。ありがとうございます。 BJ様 日付はネットから引っ張ってきた自作のカレンダーコントロールで選んだ値「yyyy/m/d」の形で、それを"m月d日"の書式で表示させていました。日付とはいえString型で宣言した変数に入っているし・・・などと甘く考えており、書式やシリアル値のことは後から知りました・・・ とりあえずは「日付ではないセル」の値は上記の通りどう見ても日付ではない文字列の型なので、IsDateで1セルごとに検証することにしました。 半平太様 どうもありがとうございました。 (ma11s) 2019/08/17(土) 13:26 ---- mougのほうに書き込みしようと書いていたら閉じられてしまったのでこちらに。 mougより引用 >シートの「ある列」にあらかじめ存在する >あらかじめ存在する日付は昇順には並んでいますが、日付のセルと日付のセルの間には別の文字列の>セルなども存在しています。 ということは。こんな感じですよね? _A______B____________ A (2018年)12月2日 B りんご C (2019年)4月25日 D (2020年)2月2日 E バナナ 既に採用されたようですが、私もsimpleさんがおっしゃる通りIsDate関数で日付型のセルを特定してから、「任意の日付」の方が大きいか判定するという方法を思いつきました。 Sub テスト() Dim MyRNG As Range Dim tmp As Range, buf As Range Dim MyDate As Date For Each tmp In Range("B1", Cells(Rows.Count, "B").End(xlUp)) If IsDate(tmp.Value) Then If MyRNG Is Nothing Then Set MyRNG = tmp Else Set MyRNG = Union(MyRNG, tmp) End If End If Next tmp MyDate = Application.InputBox(Prompt:="日付を入力", Type:=1) For Each tmp In MyRNG If tmp.Value > MyDate Then If buf Is Nothing Then Set buf = tmp Else Set buf = Union(tmp, buf) End If End If Next tmp If Not buf Is Nothing Then buf.Interior.Color = 255 End Sub また、質問と関係ない話ですが、こちらのサイトでは明確にマルチポストを許容することを謳っていますが、他のサイトではマルチポストについてNGとしてたり、言及していないところもあります。 さらに、マルチポスト自体に嫌悪感を示す方もいますので、マルチポストをするのであれば、次に投稿するときからあらかじめマルチポストをしていることを明示したほうが良いと思います。 (もこな2) 2019/08/17(土) 13:42 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201908/20190816225627.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 96999 documents and 607826 words.

訪問者:カウンタValid HTML 4.01 Transitional