とっておきの手土産を教えて

例えばセルA1に「2021年7月」を書いてあります。
セルB1に「7月」を書いてあります。
A1中の「2021年」を無視して「7月」のみ取得したいです。
比較の時、もしA1の値とB1の値を同じだったら、なになに実行します。のプログラムを作りたいと思います。
説明がうまくできず申し訳ございません。
宜しくお願い致します。

A 回答 (6件)

例えばですが、セルA1に「2021年7月」と入力すると


Excelのお節介機能が働いて、「2021年7月」に変更されてしまいます。
文字は右詰めになり数式バーでは 2021/7/1 のようになっているのが確認できます。
Excel内部では文字ではなく日付・時刻型のデータとして扱われています。
ただ、質問者さんの場合に、実際にも半角ではなく全角の2021年7月であることも考えられます。
なので、両方に対応する
If strconv(split(range("a1").Text,"年")(1),vbWide) = strconv(range("B1").Text,vbWide) = true then
True パート
Else
False パート
End If
でどうでしょうかね?
    • good
    • 0
この回答へのお礼

ご説明いただき、誠にありがとうございます。
strconv(split(range("a1").Text,"年")(1),vbWide)のやり方を実行してみましたが、Textのところ取得する値は”2021年7月1日”になってます。
”7月”のみ取得することはできますでしょうか。
宜しくお願い致します。

お礼日時:2021/08/02 13:31

すいませんスペル間違いした。

    • good
    • 0

VBAもいいけどMounth関数使ったら?

    • good
    • 0

こんばんは


VBAコードで良いのですよね。

sub sample1()
dim strtmp as string
dim strmm as string
strtmp = mid(range("a1").text, instr(range("a1").text, "年") + 1)
strmm = left(strtmp, instr(strtmp, "月"))
msgbox strmm
if range("b1").text <> """" then
if strconv(range("b1"), 4) = strconv(strmm, 4) then
msgbox ("ok")
else
msgbox ("ng")
end if
else
msgbox ("nothing b1cell")
end if
end sub
参考程度で
    • good
    • 1

A1の7月の7が全角の7で


B1の7月の7が半角の7のケースはありますか。
もし、そのようなケースがある場合、同じとして扱いますか、
それとも不一致としてあつかいますか。
    • good
    • 0

やり方はいろいろあるからなあ。



・A1セルの値を文字列として ”年” の次の文字から右を切り出してB1セルの値と比較する。
・A1セルの値の後ろに ”1日” を追加し日付データとして、シリアル値から月だけ取り出してB1セルの値と比較する。
・B1セルの値の前に ”2021年” を加えてA1セルの値と比較する。
・B1セルの値の前に ”0000年” の文字を加えて、”年” から右側の文字をバイナリーでXOR比較する。

…とまあ、パッと思いつく限りのやりかたを一覧させてみましたが、
考え方次第でアルゴリズムは変わりプログラムも変わるのです。

どの考え方を採用するかは質問者さん次第。
自身でやれをそうなものを選んで、試行錯誤してみましょう。
    • good
    • 1

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


おすすめ情報