文字列をさかさまに並び替える
3行マクロ 28回
文字列をさかさに並び替える~文字を逆に読む3行マクロ
文字列を逆から読むのは、難しいですね。
さかさことばにしてみる?
商品名を考えていて、なかなかいいのが出てこない。「いっそのこと逆さにしてみれば?頭の体操にもなりそうですから。」なんて同僚に言われてしまいました。
でも逆さにするのって、結構めんどうですよ。簡単にさかさことばにする方法はないのかな?。
(サンプルファイルは、こちらから 3行マクロ28回サンプルデータ)
Excelバージョン:
文字列をさかさまに並び替えるマクロ
今回のマクロで逆さ言葉にするために使うのは、
指定された文字列の文字の並び順を逆にした文字列を返します。
引数 string1 に文字の並びを逆にする文字列を指定します。
StrReverse 関数VBScript の関数のひとつです。書式 StrReverse(string1)
指定された文字列の文字の並び順を逆にした文字列を返します。
引数 string1 に文字の並びを逆にする文字列を指定します。
では、「ぞう君パン食うぞ」をさかさまに並び替えてみましょう。
StrReverse 関数を使って、マクロのコードに作ります。
引数string1にA2セルを指定します。
引数string1にA2セルを指定します。
Sub sakasakotoba() Range("A2").Value = StrReverse(Range("A2").Value) End Sub
先頭3文字はそのまま、残りをさかさまに並び替える
先頭3文字はそのまま、残りをさかさまに並び替える場合は、先頭3文字をLeft関数で取り出し、残りをMid関数で指定してStrReverse 関数で逆さまにします。
コードは、
Sub sakasakotoba5() Range("B2").Value = Left(Range("A2").Value, 3) & StrReverse(Mid(Range("A2").Value, 4)) End Sub
実行すると、B2セルに先頭3文字はそのまま、残りをさかさまに並び替えた文字列が表示されました。
1個ずつではなく、セル範囲を逆さまに並び替える場合は、
Sub さかさことば2() Dim 選択セル As Range For Each 選択セル In Selection 選択セル.Value = StrReverse(選択セル.Value) Next 選択セル End Subセル範囲を選択してからマクロを実行します。
となりのB列に結果を表示するには、Offsetを利用します。
Sub さかさことば3() Dim 選択セル As Range For Each 選択セル In Selection 選択セル.Offset(0,1).Value = StrReverse(選択セル.Value) Next 選択セル End Sub
今日の講義は以上です。お疲れ様でした。