• ベストアンサー

Excel/VBAを使わずに文字列を逆順に表示する方法ありますか?

宜しくお願いします。都合上、マクロ(VBA)が利用できないシートで次の動作を実現したいのです。 A1 あいうえお A2 おえういあ B1 今回の数値は (1.00) B2 )00.1( は値数の回今  A1やB1等「長さに制限のない文字列」を反転して逆順でA1やB1の様に回答セルに表示させたいのです。  既存の関数だけで実現可能でしょうか(^^;)。 

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

  • ベストアンサー
  • Chirdren
  • ベストアンサー率47% (21/44)
回答No.2

>長さに制限のない文字列 セルの制限が適用されると表示1024文字、入力32767文字まで可能ですが、実用上、256以内と想定して回答します。 IF文の入れ子で文字を抜き出そうとしても、ネストの制限でうまくいきません。 そこで、空いているセル、若しくは、新しいワークシートのセルを作業エリアとして使用します。 MID関数とLEN関数を使うと、任意の長さを持つ文字列を任意の位置で必要な文字数取り出せますので MID($A1,LEN($A1),1) とすると、「$A1」は対象のセルで、一番最後の文字を1文字選択することになります。 MID関数は、指定位置[この場合LEN($A1)]が負になるとエラーを返しますので、 ISERROR()で検査して文字を抜き出します。 =IF(ISERROR(MID($A$1,LEN($A$1),1),,"",MID($A$1,LEN($A$1),1)) 1文字で1セルを使います。横方向に並べて入力していきますが、2列目以降は、 LEN($A1)を LEN($A1)-1、LEN($A1)-2、LEN($A1)-3 ・・ と変えて、必要な文字数分入力します。(セルを横方向に使うと最大256文字です。縦方向では、65536文字まで扱えますが、表示は1024文字までですのであまり意味がないと思います。) 1セル1文字の抜き出した文字が逆方向に並んでいるはずです。 あとは、この抜き出した文字を結合して表示するだけですので、表示したいセルで  (D列以降の数式を入れたとすると) =D2&E2&F2&G2&H2&I2&J2&K2&L2 ・・ または、 =CONCATENATE(D2,E2,F2,G2,H2,I2,J2,K2,L2 ・・)  と入力し、セルを結合します。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

A1に文字列が入っているとします。 B、C列は使わない空き列または列挿入するとして B1に=MID($A$1,LEN($A$1)-ROW()+1,1)と関数式を入れて下へ複写します。最後が上で順に1文字づつ下に入ります。 文字数分の行で複写を止めるのは、人間に任せるものとする。 C1に関数式=B1と入れます。 C2に関数式=C1&B2と入れます。 B列の最下行で止めた行までC2の式を複写します。 最下行に求める文字列が出来ます。 A1とC列の最下行にある文字列をどこかに保存し 別の文字列を別のセルからコピーしてA1に入力するか貼りつける。 式を変えるよりその方が楽でしょう。 A1は東京都千代田区霞ヶ関1-2-3 B1:B15に縦に1文字ずつ 東京都千代田区霞ヶ関1-2-3 C15に 3-2-1関ヶ霞区田代千都京東

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

該当ブックにマクロを残したく無いってだけなら、別のブックにマクロを書いて、該当ブックのシートで実行するとか。。。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

A1に『今回の数値は (1.00)』を入力。 A2にA1を逆順に並べた文字列を出力。 マクロが使えないということで、A4セル以下を作業用に使っています。  A2の式:=OFFSET(A1,LEN(A1)+2,0)  A4の式:=A3&MID(A$1,LEN(A$1)-ROW()+4,1)  A5以下の式はA4をコピーします。  予想される文字列より多めに式を登録しておけば、A2の算式でエラー直前の結果を指定します。          A  1  今回の数値は (1.00)  2  )00.1( は値数の回今 ← =OFFSET(A1,LEN(A1)+2,0)  3  4  )          ← =A3&MID(A$1,LEN(A$1)-ROW()+4,1)  5  )0  6  )00            ↓ 多めにコピー  7  )00.            ↓ 多めにコピー  8  )00.1  9  )00.1( 10  )00.1( 11  )00.1( は 12  )00.1( は値 13  )00.1( は値数 14  )00.1( は値数の 15  )00.1( は値数の回 16  )00.1( は値数の回今 17    #VALUE! 18    #VALUE!

関連するQ&A

  • 表示されている文字列を取得するエクセル関数

    例えば、 A1セル「平成28年1月5日」(シリアル値で入力) A2セル「H28.1.5」(シリアル値で入力) A3セル「12345」(数値) と入っている場合に、 関数を使って、 B1セル「平成28年1月5日」(文字列) B2セル「H28.1.5」(文字列) B3セル「12345」(文字列) と表示させることはできるでしょうか? 形式を選択して貼り付け、とか、VBAでできるのはわかるのですが、 関数だけで(しかも、できれば汎用的な形の関数で) 実現できるのかが知りたいです。

  • Excel2007の文字列比較の方法について

    Excel2007の文字列比較の方法について とあるExcelシートがあり、A列、B列があるとします。 値は以下のとおりです。 A B ------ tom tom ema ben sin ken ここでA列を軸にB列を1行目から精査し、一致する値があれば、 A列の値はxxxxにしたいと思います。 A B ------ xxxxtom ema ben sin ken このロジックを実現するには、 マクロを使用が必要でしょうか?。 またどういった関数などを使用すれば良いでしょうか。 アドバイスをお願いします。

  • エクセルで数値と文字を指定すると、指定数値分のセル数だけ文字列を表示するには?

    エクセルの文字列表示方法について質問します。 例えば、A1セルに「3」、B1セルに「赤」と入力すると、 A3~A5の「3」つのセルに「赤」と表示されるようなことをするにはどのようにしたら良いか? A1とB1の値を変えると、A3以降のセルに自動表示されるようにするためにはどのようにすれば良いか? できれば、マクロを使わずに既存の関数等を組み合わせて実現できる方法があれば教えていただきたいのですが・・・。  A B C D 1 3 赤 2 3 赤 4 赤 5 赤

  • Excel文字列の連結について教えてください(VBA)

    Excelの文字列の結合について教えてください。 色々調べたのですが、VBA自体がよくわからず困っています。 やりたい事は、(Excel表をご参考) 『セルA1とB1とA2の文字を固定で、セルA3以降の文字以降を  順次連結してcsvに書き出すVBAを作成したい。』 どうしても繰り返す連結マクロがわかりません。 ExcelVBAに詳しい方、教えてください。 よろしくお願いします。 結果例) 20080501A01 20080501A02 20080501B01 20080501C01   ・   ・(300件以上続きます) <Excel表>    A列  B列 1  2008  05 2  01    3  A01 4  A02 5  B01 6  C01 7  ・ 8  ・

  • Excel2007のVBAで文字列を結合

    Excel2007のマクロで文字列を結合したいのですがうまくいきません。 下記がお題になります 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。

  • (Excel VBA)またまた困っています・・・ o...rz

    どうもrozzerです。 またもや高くそびえ立つVBの壁に激突して死にかけてしまっています・・・orz 今度は単純なマクロだと高を括っていたので鼻歌交じりでマクロを組んでいたのですが どうも如何せん上手くいきません! もう死にたいです! 現在エクセルで、とある業務で使うデータベースをマクロを組み最適化を図っています。 まず A列の2行目から任意の行に(10行までしかなかったり、1000行まであったりとランダムにあるとする)、任意の整数値があるとします。 その値の合計を、セル【B1】に表示させたいのです。 ですが、ここで問題なのですがセル【B1】に入力される式はSUM等の関数式ではなく、ただの「数値」として表示させたいのです。 つまりA列の2行目から任意の行(最終行まで)に入力されている整数値に、後々、変更があった場合に【B1】に表示されている値が、一番初めに合計の値をはじき出した値から変化しない様にしたいのです。 そして今度はセル【C1】に、A列の2行目から任意の行(最終行)までの合計値を「SUBTOTAL」関数[=subtotal(9,C1:**)]を入力したいのです。 ここまでの動作をマクロ化したいのですが、どうも如何せんどうも如何せん上手くいきません! もう死にたいです! 何卒、ご教授頂けましたら幸いで御座います。

  • エクセルで列を逆順に表示し直したい

    エクセルの表でA列、B列、C列、…を…、C列、B列、A列と列を逆順に表示し直したいのですが、簡単に変換できる方法はないでしょうか。いちいち切り取り、貼り付け等をするのが面倒です。

  • VBAで文字列検索の方法

    エクセルで実現したいVBAです。 セル内に入力されている文字列に任意の文字が含まれているかどうかを判定したいのです。 例えば, 「特別値引対応商品」と入力されているセルに 「値引」という文字が含まれているかどうか のチェックをしたいのです。 検索する文字列(上記の場合なら「値引」)は固定でかまわないのですが,どのようにすれば実現できるでしょうか。 関数を探してみたのですが,ないように思います・・・。

  • カンマ区切りの文字列単位で色を付けたい

    A1セルに 【GetWindowText(a,b,c)】 と内容が記述してあります。 【現在】 GetWindowText関数の、 「aの部分を反転しフォント色を青にする。」 「bの部分を反転しフォント色を赤にする。」 「cの部分を反転しフォント色を紫にする。」 といったことを手作業でやっております。 【VBAでやりたいこと】 GetWindowText関数の引数、a,b,cをマクロによって、フォント色を付けたいのです。 a…青 b…赤 c…紫 (1)該当セル(A1)の文字列をコピーする (2)カンマ区切りで、文字を切る (3)色を付ける (4)A1セルに埋め込む みたいなことを考え、挑戦してみたのですがうまくいきませんでした。 ご教授の方よろしくお願いします。

  • Excel2007で右列の値を左列でくくる方法

    下図1のように数値が並んでいる時、下図2のように自動的に整理する方法を探しています。 つまり、左の列の値と右の列の値を比較し、値のセル番地を変える方法です。 最終的には右列の値を左列のセルでくくる形の表の完成を目指しています。 マクロを使用する必要がある場合は、おおよそのソースコードを併せて回答していただけとありがたいです。 下図1    A  B   C 1 100 120 131 2 200 150 148 3 400 260 222 4    330 263 5    410 341 6       455 下図2    A  B   C 1 100 120 131 2       148 3    150 222 4 200 260 263 5    330 341 6 400 410 455 よろしくお願いします。

専門家に質問してみよう