おせわになります。
セルに文字列が入っていて、その中の決まった場所の数字が年月の数値なのですが、これと今日の月が正しいかを比較して、違っていれば条件付き書式で赤字になるようにしたいのですが。
例えば7月の場合、B10にAX227Z123というように 左端から3つ目から3桁が年月になっているのですが、10、11,12月になると10月の場合、左から3つ目から4桁AZ2210S98が年月になってしまいます。
このような場合の条件付き書式で当月と違った場合赤字になるような式を教えて頂きたく。
No.1
- 回答日時:
DATE関数が使えると思います。
DATE(年,月,日)
年月日のそれぞれは、決まった場所の数字ということなので、
MID(セルの文字列,開始位置,2)
で抜き出せばよいです。
今日の月は、以下になります。
MONTH(TODAY())
1.>MID(セルの文字列,開始位置,2)
では抜き出す数字の数が2つになるのでは?
1-9月までは1桁になるので2桁抜いてしまうと質問の
>AX227Z123
の場合は7Zになるのでは?
2.出来れば年2桁+月を条件にしたいのですが。
=TEXT(TODAY(),"yymm")➣4桁
の時と
=TEXT(TODAY(),"yym")➣3桁
の時でMIDで抜き出す桁数が違ってしまうので困っています。
No.2ベストアンサー
- 回答日時:
条件付き書式の条件式を
=IFERROR(MID(A1,3,4)*1,MID(A1,3,3)*1)<>TEXT(TODAY(),"yym")*1
とかではどうでしょうか?
No.4
- 回答日時:
直接の回答になっていなくてごめんなさいね。
コンピューターと人との関わりを考えて、どこまで人がするか、どこからコンピューターに任せるかという線引きを考えておくのは大事です。
いま、お困りになっているのは、月や日の数字が1桁の数字と2桁の数字が混在すると言うことですね。
一番単純で確実な解決策は、人が日付を入力するときに、月も日も必ず2ケタで入力するように決めておくことです。
例えば、2022年7月29日は、20220729のように一桁の場合に0をつけて二文字にして入力するようにすること。
人間側でしっかりとその処理をして、コンピューター側で8文字の場合のみ入力を受け付けるようにしておくと、月の数字は左側先頭から5文字目と6文字目、日付の数字は右から2文字を取り出せば良いだけ。シンプルになるでしょ。
逆に、ご質問の内容をそのままコンピューターで処理をさせようとすると処理が複雑になってバクが生じたり、いろいろな人がプログラムのメンテナンスをする時に面倒なことになってきます。
もし、現在までに入力している数値が少ないなら、日付の部分だけ入力し直して月や日を2文字で入力するように変更することをお勧めします。
この表記(文字列)はLOT Noとか製造NoとかプロダクトIDというやつで、世の中のあらゆる製品で割り付けられている識別のための文字列で企業が製品毎に決められたルールで割り付けられる文字列なので桁数やら割付を変えることは出来ない文字列です。
10~12月をX,Y,Zで表記する場合もあります。
(これは既に解決しています)
自分で決めるなら当然20220729がいいのですが、表記する限られた文字数で個体を識別するためのいろんな情報を盛り込みたいのでこのようになっています。
No.5
- 回答日時:
>TEXT(TODAY(),"yym"
№2です。よく考えたら「ym」で良かった。
多分、質問者さん側ではどうにもできないコードだから質問されているんだと思いますけどね。
忘れていました。
このような使い方をしたことが無かった(見たことは有った)ので思いつきませんでした。
通常は桁須賀変わるとやっかいなので桁数を
デモ、問題はセルの文字列から抜き出す数字の数はどうすれば良いのでしょう?
No.6
- 回答日時:
こんにちは
マクロ側で変換してあげないと無理だと思います
使い方が分からなかったら補足を付けて下さい
Sub test()
Dim lRow As Long
For lRow = 10 To Cells(Rows.Count, "B").End(xlUp).Row
Cells(lRow, "B").Offset(0, 1) = GetYM(Cells(lRow, "B").Value)
Next
End Sub
Function GetYM(strTarget As String) As String
Dim RE As Object
Set RE = CreateObject("VBScript.RegExp")
Dim result As Object
GetYM = ""
With RE
.Global = False
.Pattern = "[A-Z]{2}([0-9]{2})([0-9]+)[A-Z]"
Set result = .Execute(strTarget)
End With
If result.Count > 0 Then
GetYM = "20" & result(0).SubMatches(0) & "/" & result(0).SubMatches(1)
End If
End Function
大作をありがとうございます。
取り合えずコピペで試してみましたが、C列に288.9が入力されてしまうようです。
また、入力の度にVBAを動かす必要が有るので、実際にはセルのイベントVBAにもする必要が有ったり・・・・
これは、当方には使えないレベルのようです。
当方の想定をはるかに超える課題だったようです。
最後の手段として作業列を追加すれば何とかなりそうな気がしていますのでそちらで考えてみます。
No.10
- 回答日時:
ちなみに、IFERRORの式だけでセルで試してもらうと分かると思いますが、文字列に1を掛けて数値化しようとするとエラーになるのを利用し、コードの頭3文字目から4文字抜き出して数値化、それでエラーなら3文字抜き出して数値化するようにしていますので、抜き出しに関しては問題ないと思います。
検証不足ですみません。
では少し時間を頂いて再度Tryしてみます。
私も無い知恵を絞って、セルから3桁抜いてtoday()と4桁抜いてtoday()と比較して、どちらも合わない場合は赤字、で下記を試してみましたがうまく行きません。
=AND(LEFT(C6,3)<>TXT(TODAY(),"ym"),LEFT(C6,4)<>TEXT(TODAY(),"ym"))
どこか間違っているのでしょうね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの日付から年末尾2桁と月を1月をA~Lに変換したい 3 2022/08/08 10:32
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Excel(エクセル) エクセルで●●年にかかわりなく、任意の月日期間内にあるか?調べるには? 2 2022/05/25 10:39
- その他(Microsoft Office) googleスプレットシートで左右の数値を比較して色判別させたい 2 2022/06/06 18:33
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/10 08:51
- Excel(エクセル) 現時点の年齢を算出して、その年齢と一致したセルを色付けしたい。 4 2022/06/23 17:49
- Excel(エクセル) エクセル シート比較で書式を変えるを繰り返したい 2 2023/05/05 11:25
- Excel(エクセル) エクセルで文字列と数字が混在する列に書式設定したい。 3 2022/12/19 09:11
- Excel(エクセル) マクロ、条件付き書式のfont.color 1 2023/03/28 01:10
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで全角の数字が半角になっ...
-
エクセルのセル内に全角数字を...
-
エクセルで文字列としての指数...
-
エクセルで文字入力してEnterキ...
-
エクセルのセルや文字を点滅表...
-
EXCELで勝手に予測入力される
-
WORD2010 差し込み印刷の時間...
-
EXCEL セルの書式設定(ユーザー...
-
エクセルの入力規則で半角英数...
-
【Excel】セルの書式設定で標準...
-
EXCELで特定の文字列を入力→エ...
-
Excelで時間順で並べ替えしたい
-
平方センチメートルの入力の仕方
-
エクセルで自動的にイコール(...
-
エクセル関数で在庫数の増減を...
-
エクセルで(1)を入力すると...
-
エクセルでの秒未満の入力
-
Excelで【1-1】【1-2】【1-3】...
-
Accessのフォーム上のテキスト...
-
セルに数字を入れると×1000にな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのセル内に全角数字を...
-
Excelで全角の数字が半角になっ...
-
エクセルで文字入力してEnterキ...
-
エクセルのセルや文字を点滅表...
-
エクセルで文字列としての指数...
-
Excelで時間順で並べ替えしたい
-
EXCELで勝手に予測入力される
-
セルに数字を入れると×1000にな...
-
Excelで【1-1】【1-2】【1-3】...
-
エクセルで時間入力10:30の:...
-
エクセルで自動的にイコール(...
-
エクセルで【0.5日と1日】を表...
-
エクセルの「○分○秒」の表示形...
-
WORD2010 差し込み印刷の時間...
-
平方センチメートルの入力の仕方
-
入力規則でスペース入力を禁止...
-
EXCELで特定の文字列を入力→エ...
-
コクヨのリーフ仕入帳等にパソ...
-
Accessのフォーム上のテキスト...
-
関数CONCATENATEの表示で
おすすめ情報