• ベストアンサー
  • すぐに回答を!

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

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

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数428
  • ありがとう数2

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

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

こんばんは! 関数でやるとなると文字数だけオートフィルが必要になると思います。 そこで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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • EXCEL関数

    長い文章の中の<>に囲われた文字だけ抜き出したいときの関数を教えてください。 たとえば、セルA1~A14に書かれている分の中にそれぞれ<>に囲われた文字があるとして、文字数は不規則です。それをB1~B14に抜き出したい。

  • エクセルの関数について教えてください。

    色々調べてみたのですがわからなかったのでどなたか教えてください。 例えばA1のセルに「1111」と入力されていてB1のセルに「土曜日」と入力された場合にC1のセルに「特」という文字を自動に入れたい場合はどうすればよいのでしょうか? A1とB1のセルに何も入力されていない場合はC1も空欄にしたいです。 A1のセルにはVLOOKUP関数をいれていて、返ってきた文字が「1111」の場合です。 B1は手入力で入れています。 同時にA1のセルに「2222」(これもVLOOKUP関数で帰ってきた文字です)、B1のセルに「日曜日」と入力された場合にはC1のセルには「大特」という文字を入れたいのですが、組み合わせでできますでしょうか? 初心者なので質問がおかしいかもしれませんが、よろしくお願いします。

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

    こんにちは sheet1に入力されている数字をsheet2に並び変えるのですが、各セルばらばらに文字数が決まっています。そこで10文字しか入らないように設定されてあるsheet1のセルからsheet2に並び変える際に、「前にスペースを入れて右詰め」にするにはどのようにしたらいいですか?? A1    B1    C1(sheet1) (sheet2)A1      B1     C1 1 123456 123456789 ―――> _123456789 _________1 ____123456 (文字数10桁の場合)               ↑半角スペースです。 sheet2のセルに数式を入力したいです。 よろしくお願いします。2007を使っています。

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • エクセルの関数を教えてください。

    指定した二つのセルに、二つ、もしくはどちらかひとつのセルに、入力された場合、指定した任意のセルに、文字が入力されるような設定はできますか?また、二つのセルのどちらにも入力がなかった場合は、「0」ではなくて、その指定した任意のセルには何も入力されないようにしたいです。 例えば、A1とB1のセルに入力があった場合、A2に(名前)と自動的になり、A1だけ、またはB1だけのセルに何かが入力された場合でも、A2に(名前)と入力されるようにし、A1,B1のどちらのセルにも入力ががない場合は、A2には何も入力されないようにしたいです。

  • エクセル 数式の文字も含めた数え方

    数式が入力されたセルの文字数、たとえば=IF(A1=11,22,999)といった式をA2に記述した場合のA2の使用している文字数をカウントしたいのです。仮にA1が11だった場合A2には22が参照されてLEN関数でA2を見にいったとしても文字数2が返されてしまいます。 希望としては=から)までの使用しているすべての文字をカウントしたいのですが何かいい方法はないでしょうか? よろしくお願いします。

  • エクセル 関数について

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

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

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

  • 関数の作り方教えてください

    A1・B1のセルにそれぞれ"98,-189"","と入力されている場合、A1セルの-189を抜き出すためにC1セルに組み合わせ関数を  =right(A1,Len(A1)-Find(B1,A1))と入力すると-189が 抜き出す事が出来るが、これをユーザー定義として以下の様に関数を作成するとコンパイルエラーがでます。 Function moji_nuki(対象 as string,検索文字 as string) moji_nuki=right(対象,Len(対象)-find(検索文字,対象)) End Function 関数を並べているだけですがsub Functionが定義されていないとエラーメッセージがでるのは何故か、何方か教えてください。ちなみにEXCEL2002です。よろしくお願いします。

  • 関数があるところに文字を入力することはできますか?

    題名の通りなのですが B1 = IF(A1=1,2,"") という関数を入れています。 A1が1のときに2を表示、そうでないときは空欄 としているのですが このセルが空欄のとき、あとからこのセルに任意の文字を打込み、関数を壊さずに済むことはできないでしょうか。 文字を入力してしまうと関数が消えてしまいます。 いい方法を知っている方、教えてください。

  • エクセル関数について

    エクセル関数について質問です。 前回の質問と似ています。以下のことは関数で可能でしょうか。 ・セルA1からA4には数値が入力される。 ・セルA1からA4のいずれかに入力された値をB1に返す。 ・セルA1からA4で二つ以上のセルに入力がある場合、B1には「ERROR」という表示を返す。 ・B1は桁区切り「#,###」スタイルにする。 以前教えていただいたこと等を参考に試してはみたのですが、思うような結果が得られませんでした。 関数に詳しい皆様、どうか教えていただけますでしょうか。 よろしくお願いいたします。

  • Excelでどの関数を使えばいいですか?

    以前作られていたものが壊れてしまったようです。 次のような場合に、どの関数を使えばよいか教えてください。 A1のセルに「H16.5.18」と入っています。 (このセルは直接入力してあります) B1のセルに関数を使いたいのですが、 A1を参照して、B1には「H16.6」としたいのです。 つまり、A1のセルに入っている日付の次の月を B1に返したいのです。 A1は年月日ですが、B1に入る日付は年月のみです。 どうぞよろしくお願いします。

  • Excelの文字列関数について

    Excelの文字列関数について こんにちは。Excel2007を使用しています。 先日、こちらで質問させていただいた【QNo.5785641】の続きになるのですが・・・ セルの中にある特定の文字が含まれている場合は、ある文字の後ろの数値を抽出したいという質問で、 例えば、セルA1に『AA-11 $100.00』、A2に『BB $ 95.00』と入力されている場合、『AAという文字が含まれている場合はB1に$マークの後ろの数値を抽出、BBという文字が含まれている場合はC1に$マークの後ろの数値を抽出する』というものを関数を使用して作りたいというものに対し、 =IF(COUNTIF(A1,"*AA*")=1,RIGHT(A1,LEN(A1)-FIND("$",A1)),"") =IF(COUNTIF(A1,"*BB*")=1,RIGHT(A1,LEN(A1)-FIND("$",A1)),"") という回答をいただきましたが、さらに追加で質問です。 例えば、セルA1に『AA-11 $100.00 aabbcc』、A2に『BB $ 95.00 abc』というように、抽出したい数値の後ろにも文字が入力されている場合はどのようにしたらよいのでしょうか? 宜しくお願いします。

  • excelの関数

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