エクセルで回文を作る関数を組みたい

このQ&Aのポイント
  • エクセルで回文(とまと、しんぶんし、たけやぶやけた、など)を作る関数を組みたいです。
  • セルA1に任意の文字数の文を入力すると、セルB1にそれを逆からならべた文を自動的に表示するような関数を組みたい
  • 入力セル1個、出力セル1個にしないとカッコよくないですね。次に考えたのが、len関数でセルA1の文字数を検知して、それを引数にしてleft,raight,mid関数で文字を取り出そうと思ったのですが、文字数が増えるごとに関数が1個必要になるので、とても任意の文字数に対応できませんでした。あらかじめ関数として用意されていませんかねえ?文を逆転させる関数って。どなたか、エクセルに詳しい方、お願いします。
回答を見る
  • ベストアンサー

エクセルで回文を作る関数を組みたい

概要 エクセルで回文(とまと、しんぶんし、たけやぶやけた、など)を作る関数を組みたいです。 詳細 セル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個必要になるので、とても任意の文字数に対応できませんでした。 あらかじめ関数として用意されていませんかねえ? 文を逆転させる関数って。 どなたか、エクセルに詳しい方、お願いします。

  • s_end
  • お礼率95% (6183/6488)

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 関数でやるとなると文字数だけオートフィルが必要になると思います。 そこでVBAになってしまいますが・・・ 一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてA列にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Columns(1)) Is Nothing Or Selection.Count <> 1 Then Exit Sub Dim k As Long Dim str, buf As String For k = Len(Target) To 1 Step -1 str = Mid(Target, k, 1) buf = buf & str Next k With Target.Offset(, 1) .Value = buf If Target = Target.Offset(, 1) Then .Offset(, 1) = "○" Else .Offset(, 1) = "×" End If End With End Sub 'この行まで ※ 「よのなかばかなのよ」等々色々入力してみてください。 ご希望の方法でなかったらごめんなさいね。m(_ _)m

s_end
質問者

お礼

ありがとうございます。 関数だけだと難しいんですね。

その他の回答 (1)

回答No.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 なお、上に示した関数では反転した文字列を表示するだけですが、「しんぶ」を入れたら「しんぶんし」と表示するような関数も、ちょっと工夫すれば簡単にできます。チャレンジしてみてください。

s_end
質問者

お礼

ありがとうございます。 関数だけだと難しいんですね。

関連するQ&A

  • エクセルでかワードで、逆さま言葉を表示できますか

    回文を作りたいと思っています。 たけやぶやけた のように、上から読んでも下から読んでも同じというものです。 例えば、エクセルのあるセルに たけやぶ と入力すると、1つ目の指定のセルには たけやぶやけた と表示され 2つ目の指定のセルには たけやぶぶやけた と表示されるようになればいいなと思います。 (奇数の文字の回文と偶数の文字の回文に対応させるため、作成結果は2種類表示させたほうが良いと思いました) フリーソフトで『回文ちゃん』というものがありますが、 http://www.vector.co.jp/soft/dl/winnt/amuse/se327191.html これと同じようなことがエクセルやワードでできないかなと 思いました。 できるでしょうか?

  • エクセル関数を教えて下さい。

    エクセルの数式を教えて下さい。三角関数を全く忘れていますのでよろしくお願 いします。 図形とエクセルの表を画像でアップしました。  Aは角度  B/C/Dは長さ   一行目   セルA1に 任意の角度を入力 B1に 任意の長さを入力するとC1には C の長さの値が出るエクセル関数 D1には Dの長さの値が出るエクセル関数  2行目も同じ様に  A2に 角度  C2に長さを 任意に入力すると  B2とD2に 長さが出てくる エクセル関数   3行目も同じ様に  A3に角度 D3に長さを 任意入力すると  B3とC3に 長さが出てくるエクセル関数  4行目  B4とC4に 長さを任意入力すると  A4に角度 D4に長さが出てくる エクセル関数 

  • 回文 1億連発

    回文をおしえてください。 「上から読んでも、下から読んでも同じ意味なる言葉」 のことです! なお、言語としてある程度、 意味が通る文字列にてお願いします。 例:竹やぶ焼けた   桃と桃 【回答1000000000回目】で打ち切ります。 【お願い】 ・1回の回答で、1回の回文にてお願いします。 ・一人、何回答でもOKです。 ・言語、文字、文字数は問いません よろしくお願いします (*^^*)

  • エクセル 関数について

    エクセル関数についての質問です。 次の関数をお知らせください。 A1のセルにデータが入っている場合には、B1に任意(例「1」)の数字を入力。 また、A1のセルにデータが入っていない場合には、A1のセルが空白(NULL)になる。 宜しくお願いいたします。

  • エクセルで開いているファイル全てに関数を適用する方法は無いでしょうか?

    エクセルで開いているファイル全てに関数を適用する方法は無いでしょうか? 例えば文字数が3万を超え1つのエクセルファイルに納まらなくてファイルを5つに分けたとします。 そこからLEN関数を使うとなると5つのファイルすべてに「LEN(A1)」と記入しなければならず面倒です。(LEN関数ならまだ簡単ですが…) そこで、一気にすべての開いているファイルのA1のセルにLEN関数を適用できたら手間が掛からず作業できるのですが 不可能でしょうか?

  • Excel 関数

    こんにちは、よろしくお願いいたします。 添付のエクセルシート セルB1に300より大きい数を入力した時はA 小さい数を入力した時はBとセルC1に入るような、関数を教えてください。 勉強不足で申し訳ありません、よろしくお願い致します。

  • エクセルの関数教えて下さい。

    指定したセルに任意の文字等が入力されたら、指定したセルに任意の文字等が自動的に入力できるような設定はありますか? 例えば、A1に(数字)と入力されたら、A2に(文字)と自動的になるようにしたいです。 Excel2003を使っています。よろしくお願いします

  • エクセルの質問です。

    エクセルの質問です。 いつもお世話になっています。質問させて下さい。基本的なことかもしれませんが、、すみません。 例えば一つのセル内に 6-3 と入力すると自動的に日付になります。 6+3としても表示形式が変わったりはしません。 さらに深い質問なのですが、 一つのセルに   7/4(日)   となっているものをLEN関数で文字列の文字数を返すと  答えは当然6が返ります。  しかし、その6になった値に関して -3 を付け数式的には  =LEN(A1)-3 とすると、答えは 1/3 となります。 LEN関数で同じ6が返るように仮に AAAAAA として、 -3をつけたし =LEN(A1)-3 としても、答えは 3にしかなりません。勝手に表示形式は変わりません。 勝手に表示形式が日付に変わるのはなぜなのでしょうか?

  • excelの関数

    excelの関数についておたずねします。 A1のセルに1を入力します。そしてB1のセルに1を入力したときにC1のセルに 正解 と表示させたいのです。 もう一つA1のセルに 1,2,3 を入力します。そしてB1のセルに1,2,3のどれかを入力したときにC1のセルに 正解 と表示させたいのです。そんな関数はありませんか? よろしくお願いいたします。

  • エクセル関数について(2)

    エクセルの関数で教えていただきたいことがあります。(XP使用) 1つのセルで3つの条件のうち、いづれかの条件を満たしている場合、文字を返したいのです。例えば・・・ 1行(A1から)には⇒1日~31日までの日付を入力します。 B1セル⇒2 B2セル⇒10 B3セル⇒25と数字を入力します。 C1セル~C31セル、1つづつに(B1セル、B2セル、B3セルの入力した数字、いづれかの条件を満たしていれば)「○」と文字を返す計算式を返したいのです。 以前は「2つの条件を返す関数」を聞いたのですが、3つ以上の条件をかえす場合があることに気づきました。 ORだと2つしか条件を返さないのですが・・・ すみません、よろしくお願い致します。

専門家に質問してみよう