アプリ版:「スタンプのみでお礼する」機能のリリースについて

おせわになります。

セルに文字列が入っていて、その中の決まった場所の数字が年月の数値なのですが、これと今日の月が正しいかを比較して、違っていれば条件付き書式で赤字になるようにしたいのですが。

例えば7月の場合、B10にAX227Z123というように 左端から3つ目から3桁が年月になっているのですが、10、11,12月になると10月の場合、左から3つ目から4桁AZ2210S98が年月になってしまいます。

このような場合の条件付き書式で当月と違った場合赤字になるような式を教えて頂きたく。

A 回答 (15件中1~10件)

条件付き書式の条件式を



=IFERROR(MID(A1,3,4)*1,MID(A1,3,3)*1)<>TEXT(TODAY(),"yym")*1

とかではどうでしょうか?
    • good
    • 1

A1の条件付き書式の数式


=1*IF(ISNUMBER(1*MID(A1,6,1)),MID(B20,5,2),MID(A1,5,1))=MONTH(TODAY())
    • good
    • 0

No.9です。



> =today()が10~12月は2でないと不味いのでは?
今日の月は、以下で求まります(No.1に書いています)。
MONTH(TODAY())
    • good
    • 0

こ…これでどうでしょうか(汗)


ワークシート変更イベントです
B列の10行目以降に変更が有ったらZZ列に日付の1日をセットします

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = Columns("B").Column And Target.Row >= 10 Then
Cells(Target.Row, "ZZ").Value = GetYM(Target.Value)
End If
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) & "/1"
End If
End Function
    • good
    • 0
この回答へのお礼

すみません!!!

折角なのでこのコードも試してみて結果報告してから閉め切ろうとしたら、今週は時間が無いので検証が先延ばしになるのですが、追加でのご回答が続いています。

本件、chonamiさんのご回答で解決出来ていますので、これ以上の手間は後続の回答者様に失礼だと思いますので一旦締め切らせていただきます。

折角のご回答の結果報告が出来ない事申し訳ありませんがご了承ください。

お礼日時:2022/08/01 08:42

>LEFT(C6,3)



これは対象セルの左から3文字抜き出すということですからAZ227YC001だと「AZ2」となります。日付の「227」などとは絶対に合致しないのでどちらもTRUEとなり結果として何を入れても色はつかないということになりますね。

ところで、私が提示した式はセルを何に変更していて、適用先はどこからどこの範囲にしているのでしょう?
    • good
    • 1
この回答へのお礼

再度TRYしてみたら228にするとチャンと赤字になりました。
先ほどはどこが間違ったのかわかりませんが・・・

条件付き書式は長い式は非常に入力、特に編集しにくいですね。
言い訳ですが。。。

何度もご丁寧な対応ありがとうございました。

式を入力した後、OKするとアチコチに””が付いてしまうのは何とかならないものか!?

あっ、先ほどの不具合はこれも、適用セルも範囲もちゃんと修正して確認していますので、原因ではありません。
恐らく式の入力ミスだと思います。
お手数をお掛けしてしまいました。

後は今日が10月になるのを待ちます。(大丈夫でしょう!)

お礼日時:2022/07/29 17:14

説明が書かれていなくて申し訳ありませんでした。


所定の文字(AX227Z123)からアルファベットとアルファベットの間の数字をくり抜く処理です

Cells(lRow, "B").Offset(0, 1)の所が出力先になります。
Cells(lRow, "ZZ")※ZZは出力する列アドレスに変更して頂いてもよろしいですか?
マクロの実行方法はALT+F8で該当の(test)マクロを実行して頂ければ出来ると思います。セルチェンジイベントにしなくても大丈夫だと思います
    • good
    • 0

ちなみに、IFERRORの式だけでセルで試してもらうと分かると思いますが、文字列に1を掛けて数値化しようとするとエラーになるのを利用し、コードの頭3文字目から4文字抜き出して数値化、それでエラーなら3文字抜き出して数値化するようにしていますので、抜き出しに関しては問題ないと思います。

    • good
    • 1
この回答へのお礼

検証不足ですみません。
では少し時間を頂いて再度Tryしてみます。


私も無い知恵を絞って、セルから3桁抜いてtoday()と4桁抜いてtoday()と比較して、どちらも合わない場合は赤字、で下記を試してみましたがうまく行きません。

=AND(LEFT(C6,3)<>TXT(TODAY(),"ym"),LEFT(C6,4)<>TEXT(TODAY(),"ym"))

どこか間違っているのでしょうね。

お礼日時:2022/07/29 16:32

No.1です。



> 1.…1-9月までは1桁になるので2桁抜いてしまうと
では、「1」にしてください。
    • good
    • 0
この回答へのお礼

=today()が10~12月は2でないと不味いのでは?

お礼日時:2022/07/29 16:34

>227を228(22年8月)にしても赤色になりません



私の方はなりますよ。
条件付き書式の適用先と式のセル指定が合致していないのでは?
    • good
    • 1

No.2さんの回答が一番妥当ですね


パチパチパチパチ
文字を無理やり引き抜く事しか考えてませんでした(__)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!