重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

たとえばA1の内容が aiueo のとき B1に oeuia と表示させるにはどうすればいいですか? そういう関数はありますか?
ご教示よろしくお願いします

A 回答 (10件)

見落としていました


>選択した各セルの右隣のセルに結果が表示されるようにしたいのですが…

Sub test2()
Dim rng As Range
For Each rng In Selection
rng.Offset(0, 1) = StrReverse(rng)
Next
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
VBAには専用の関数があるんですね
エクセルにもあるといいのですが...

専用の関数を使うとかなり簡潔になりますね
お教え頂いたスクリプトでも実行してみます

お礼日時:2009/03/29 11:10

回答は出ているようですが


VBA関数に"StrReverse"が用意されていますよ

Sub test()
Range("b1") = StrReverse(Range("a1"))
End Sub

参考まで
    • good
    • 0

Sub tes2()


  Dim c As Range
  Dim i As Integer
  
  For Each c In Selection
    For i = Len(c.Value) To 1 Step -1
      c.Offset(, 1).Value = c.Offset(, 1).Value & Mid(c.Value, i, 1)
    Next i
  Next c
End Sub
    • good
    • 0
この回答へのお礼

再度ご回答頂きありがとうございます
実際に試してみましたが カンペキとしか言いようがないですね...
本当にありがとうございます!

これだと計算用の冗長なセルが不要ですし汎用性が高いので
これを利用して作業を進めたいと思います.

お礼日時:2009/03/29 08:13

おはようございます。

No.3です。
>B1 に =IF(A1,B1+1,0) を入れると #VALUE! と表示されます
たぶんですが、[#VALUE!]と表示されるのは式を入力する時、A1になんらか文字列が入っていたのではないでしょうか?
循環参照なので、[#VALUE!]が表示されるとA1=1としても、一般機能のようにエラーを解除して再計算されません。
まず、A1を[DEL]で削除してください。それで[B1]が0になれば、A1に1を入力してください。
循環参照はエラー扱いされてほとんど使うことがありませんので、慣れないとなかなか判りにくいですね。
うまく行かないときは、混乱しますのでこの案は無視してください。
    • good
    • 0
この回答へのお礼

おはようございます.再度ご回答ありがとうございます.
もう一度初めからやり直してみたところ,ちゃんと実行できました!
私の操作に不手際があったようです.すみません...

お礼日時:2009/03/29 08:09

参考出品



Sub tes1()
  Dim i As Integer
  For i = Len(Range("A1").Value) To 1 Step -1
    Range("B1").Value = Range("B1").Value & Mid(Range("A1").Value, i, 1)
  Next i
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
VBAは不慣れなのでなるべく使いたく無かったのですが
お教えいただいたコードをコマンドボタンに割り付けてみたところ
あっさり解決しました! 本当にありがとうございます

今のままでは A1 → B1 にしか対応していませんので
任意のセルを複数選択後コマンドボタンを押すと
選択した各セルの右隣のセルに結果が表示されるようにしたいのですが…
VBAの参考サイトをご存知でしたらお教え下さい

お礼日時:2009/03/29 06:47

何度も!何度も!ほんとぉ~!にごめんなさい!m(__)m


No.1・4です。
先ほどの黄色の列を削除してしまうと、エラーになってしまいますので
逆文字になった列をA列の方へドラッグして
一文字ずつ入っているセルを見えなくしてみてはどうでしょうか?

尚、一連の操作をマクロに記録しておけば、
データが増えても簡単に出来ると思います。
しつこいくらい顔を出して・・・失礼しました。
それではおやすみなさい。m(__)m
    • good
    • 0
この回答へのお礼

たびたびご回答ありがとうございます!
アドバイスどおり作業したいと思いますがきょうはこれにて...
おやすみなさいませ...

お礼日時:2009/03/29 02:12

たびたびごめんなさい!


No.1です!
またまた・・・反則技を持ってまいりました!
Excel2003での回答ですが、参考までに・・・
すでにA列に文字が入力されている場合ですが。

A列に行挿入してB列にA列すべてをコピーします。
B列すべてを範囲指定して、
データ → 区切り位置 「スペースによって・・・」を選択
→一番文字数の多いところまで区切り位置を一文字ずつ設定してOK
↓の画像であれば、L1セルに
K1&J1&I1&H1&G1&・・・という具合に逆から&でつないでいきます。
その後オートフィルでコピー
最後に黄色の列をすべて削除して完了です!
関数ではなく今回もかなり無理矢理って感じですが、
何度もごめんなさい。m(__)m
「エクセル 文字列反転」の回答画像4
    • good
    • 0
この回答へのお礼

再度ご回答ありがとうございます!
画像のおかげでとても分かりやすかったです!

ただ,実際のデータはとても長いので,区切りの指定で時間が...
しかし現時点ではこの方法が一番良さそうに思えますので
他にいい方法がなければこの方法で行きたいと思います

お礼日時:2009/03/29 01:24

一般的ではないのですが、関数で並べ替えてコピー値貼り付けで文字列に変換する方法です。


循環参照を使うので、オプションの「反復計算を行う」にチェック
回数は適当に「30」(文字数より大きい数字)
[B1]=IF(A1,B1+1,0)
[D1]=aiueo があるとして
[E1]=IF($A$1,MID(D1,$B$1,1)&E1,"") と入力します。
ほかの文字列の横に[E1]の式をコピーしてこれで準備が完了です。
[A1]に1を入力すると文字列が逆転します。

変換した逆文字を[コピー][値貼り付け]をして確定して、「反復計算を行う」のチェックをはずしたほうが無難でしょう。
循環参照になれていないと戸惑いますので参考程度です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
試してみたのですがよく分かりませんでした...

反復計算を行うにチェックまでは問題ないのですが
B1 に =IF(A1,B1+1,0) を入れると #VALUE! と表示されます

それを無視して D1 にデータを入力し
E1 に =IF($A$1,MID(D1,$B$1,1)&E1,"") を入れるとここでも #VALUE! と表示されます
これは B1 がすでにエラーなので当然ですが...

それも無視して A1 に 1 と入れても何も起きません...
循環参照云々の前に何か大きな問題がありそうな気がするのですが...

お礼日時:2009/03/29 01:20

同じように考える方おられるんですね



過去ログです
EXCELで文字列の並べかえ
http://oshiete1.goo.ne.jp/qa3197571.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
同じ質問が過去にもあったのですね
質問検索したのですが自分では見つけられませんでした...

もっとスマートな方法がないかと思い質問したのですが
関数で一発でできるようなものではなく
何か一工夫しなければならないようですね

他の方法がないかもう少し待ってから締め切ろうと思います

お礼日時:2009/03/28 23:57

こんばんは!


やり方は色々あるかも知れませんが・・・
今思いつく方法としては、かなり強引ですが、
A1セルの文字をB1セルに表示させるとします。
B1=RIGHT(A1,1)&LEFT(RIGHT(A1,2),1)&LEFT(RIGHT(A1,3),1)&LEFT(RIGHT(A1,4),1)&LEFT(RIGHT(A1,5),1)

ただし、5文字の場合の数式です。
他にも簡単な方法の回答があるかも知れませんので
軽く読むくらいにしておいてください。m(__)m
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
文字数が決まっているならご教示の方法でも大丈夫なのですが
実際に扱っているデータはセルによって文字数がまちまちなので...
他にもいい方法があればお教え下さい

お礼日時:2009/03/28 23:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!