![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
概要
エクセルで回文(とまと、しんぶんし、たけやぶやけた、など)を作る関数を組みたいです。
詳細
セル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個必要になるので、とても任意の文字数に対応できませんでした。
あらかじめ関数として用意されていませんかねえ?
文を逆転させる関数って。
どなたか、エクセルに詳しい方、お願いします。
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
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) Excel 関数 数式 について 2 2022/09/02 21:45
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセルで日付が入っているセルを一定の法則に従って違うセルに表示したい 2 2022/04/04 17:16
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
エクセル 足して割る
-
エクセルで指定したセルのどれ...
-
エクセルの一つのセルに複数の...
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
Excel 例A(1+9) のように番地の...
-
セルをクリック⇒そのセルに入力...
-
セルの高さ(行高)を求めるには?
-
複数のセルのいずれかに数字が...
-
エクセルで住所と建物名を分け...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
(Excel)数字記入セルの数値の後...
-
【Excel】 セルの色での判断は...
-
エクセル オートフィルタで絞...
-
数式を残したまま、別のセルに...
-
excelの特定のセルの隣のセル指...
-
Excelでのコメント表示位置
-
対象セル内(複数)が埋まった...
-
EXCEL VBA セルに既に入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
セルをクリック⇒そのセルに入力...
-
Excelで数式内の文字色を一部だ...
-
エクセル 足して割る
-
対象セル内(複数)が埋まった...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
【Excel】 セルの色での判断は...
-
(Excel)数字記入セルの数値の後...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
excelのCOUNTIF関数で、『範囲=...
-
Excel2003 の『コメント』の編...
-
枠に収まらない文字を非表示に...
-
Excelで住所を2つ(町名迄と番...
-
複数のセルのいずれかに数字が...
おすすめ情報