StrConv関数とライス小の大盛り
Excel には StrConv関数という、文字変換用関数があります。
例えば以下のような感じです。
Sub StrConvSample() MsgBox StrConv("バナナ", vbWide) End Sub
String(文字)Convert(変換)で、「バナナ」が vbWide つまり全角の「バナナ」に変換されたわけです。
ところでこの関数、指定文字列の中身を選択的に変換することはできません。つまり半角にするなら全部半角、全角なら全て全角になります。従って処理の順番が変われば、変換結果も変わってきます。
Sub StrConvSample() MsgBox StrConv(StrConv("バナナとリンゴとミカン", vbWide), vbNarrow) End Sub
Sub StrConvSample() MsgBox StrConv(StrConv("バナナとリンゴとミカン", vbNarrow), vbWide) End Sub
ここまで、当然と言えば当然の結果です。
参考までに、この処理は引数を足し算で指定することが出来ます。
↓半角化+大文字化
Sub StrConvSample() MsgBox StrConv("aBc", vbNarrow + vbUpperCase) End Sub
ただし相反する二つの引数、例えば半角化と全角化を同時に指定した場合は、エラーになるので御注意ください。
Sub StrConvSample() MsgBox StrConv("バナナとリンゴとミカン", vbNarrow + vbWide) End Sub
ところで今回のテーマは、↓を思い出したのが切っ掛けでした。
matome.naver.jp
そもそも、以下はどのように定義されているのでしょうか。
- 小
- 大(盛り)
大盛が2人前である場合、単に並盛を2つ注文することとの差別化が難しい。
ということで勝手に、次の通り定義してみました。
- 半 ⇒ 0.50倍(1/2倍) 例)半ライス、半チャーハンなど
- 小 ⇒ 0.75倍(3/4倍) 例)小ライス ※店舗によっては、半=小の場合もある
- 並 ⇒ 1.00倍
- 大 ⇒ 1.50倍(3/2倍) 例)大ライス、ラーメン大盛など
この定義を正とした場合、相反する引数(?)ではあるものの、次式が成立します。
半ライスの大盛=大盛ライスのハーフ(半)=並盛の0.75倍
この計算式を見て、バカバカしさ半分と共に、中々面白いなと思いました。
なぜなら半ライスの大盛は小ライスと同じであり、少なくとも「1杯は食べられないが、1杯弱は食べたい気分」が見て取れます。
一方で大盛ライスのハーフも同じ量でありながら、「一旦大盛にしたうえで、半分にする」意図が伝わりにくいです。注文の受け手に「この人、一体何考えてんだ?」といった悪感情を与える恐れがあります。
(とてもお腹が空いていたため、勢いで「大盛」と言ったものの、急に弱気になって「・・・のハーフ」と続けてしまったか)。
※共に私見です。あくまで。
世の中には、順序を入替えると得られる結果が正反対になることがあるため、時に注意が必要です。また一方で、最終的な結果が同じでありながら、順番を変えることで、与える印象が変わってしまう場合もあるようです。文章も会話も、コードも、受け手のことを考えた構成が重要だなと思った次第です。
今回のまとめは、かなり強引でした。
参考まで。