質問: エクセルで回文を作る関数を組みたい 概要 エクセルで回文(とまと、しんぶんし、たけやぶやけた、など)を作る関数を組みたいです。 詳細 セルa1に任意の文字数の文を入力すると、セルb1にそれを逆からならべた文を自動的に表示するような関数を組みたい 自分で途中まで考えてみましたが、任意の文字数、ってところが難しい所ですね。 また、できれば入力セル、出力セル、ともにひとつのセルで済ませたいです。 1セル1文字ならば簡単ですよね。 1セル1文字に縦書きにするとしたら b列に セルb1=a10 セルb2=a9 セルb3=a8 セルb4=a7 セルb5=a6 セルb6=a5 セルb7=a4 セルb8=a3 セルb9=a2 セルb10=a1 とするだけです。 ネコでもできますわな。(笑) 入力セル1個、出力セル1個にしないとカッコよくないですね。 次に考えたのが、len関数でセルa1の文字数を検知して、それを引数にしてleft,raight,mid関数で文字を取り出そうと思ったのですが、文字数が増えるごとに関数が1個必要になるので、とても任意の文字数に対応できませんでした。 あらかじめ関数として用意されていませんかねえ? 文を逆転させる関数って。 どなたか、エクセルに詳しい方、お願いします。
回答: ワークシート関数では辛そうですが(文字列反転関数がもともとあるかどうかは調べてません・・)、ユーザー定義関数(vbaマクロ関数)というのを作れば簡単です。 visual basic editorを開いて、該当bookに標準モジュールを新たに挿入します。 その標準モジュールに下記のような関数を書きます。 ↓↓↓ function 文字列反転(文字列 as variant) for i = len(文字列) to 1 step -1 文字列反転 = 文字列反転 & mid(文字列, i, 1) next end function ↑↑↑ visual basic editorを閉じ、元のワークシートでa1に元の文字列を入れたとして、b1に今作成した関数を書きます。 =文字列反転(a1) visual basic editorの細かいところは端折って説明しているので、不明点は検索するなどしてみてください。 このあたりが参考になるかもしれません:http://www.konomiti.com/ex_kan_05.html なお、上に示した関数では反転した文字列を表示するだけですが、「しんぶ」を入れたら「しんぶんし」と表示するような関数も、ちょっと工夫すれば簡単にできます。チャレンジしてみてください。