プロが教える店舗&オフィスのセキュリティ対策術

エクセルで
A1セルに"japan"、A2セルに"america"
と言う表があったとき、
B1セルに"napaj"、B2セルに"acirema"
(文字列の順序を逆転する)
と言ったように出力する方法はありませんか?

よろしくお願いします。

A 回答 (7件)

◆とりあえず、10文字までですが(あまり芸がない方法ですが)


B1=MID($A1,10,1)&MID($A1,9,1)&MID($A1,8,1)&MID($A1,7,1)&MID($A1,6,1)&MID($A1,5,1)&MID($A1,4,1)&MID($A1,3,1)&MID($A1,2,1)&MID($A1,1,1)
    • good
    • 0

マクロが出来ない私なら次のようにします。



   A      B   C  D E F G H I J K L
1 文字列   逆文字列 10 9 8 7 6 5 4 3 2 1
2 japan    napaj           n a p a j
3 america   acirema       a c i r e m a
4 thai    iaht             i a h t
5 usa     asu               a s u
6 yugoslavia aivalsoguy a i v a l s o g u y

1.A列の文字列の中で最長が 10文字とすれば、セル C1 以右に連続数値
  10、9、8、…、1 を入力
2.セル C2 に式 =IF(LEN($A2)<C$1,"",MID($A2,C$1,1)) を入力して、此
  れを右方にズズーッと複写
3.セル B2 に式 =C2&D2&E2&F2&G2&H2&I2&J2&K2&L2 を入力
4.範囲 B2:L2 を下方にズズーッと複写
    • good
    • 5

#2です。

遅くなりまして。
多分以下のようにできると思います。

Sub func()

Dim myStr As String
Dim strmy As String
Dim i As Integer

For s = 1 To 200

myStr = ""

If Range("A" & s).Value = "" Then Exit Sub

i = Len(Range("A" & s).Value) + 1
While i > 1
i = i - 1
strmy = Mid(Range("A" & s).Value, i, 1)
Select Case StrConv(strmy, vbWide)
Case "゛", "゜"
i = i - 1
strmy = Mid(Range("A" & s).Value, i, 2)
End Select
myStr = myStr & strmy
Wend

Range("B" & s).Value = myStr

Next

End Sub
    • good
    • 1

#1です。


>VBAは扱ったことがないので・・・、
御免なさい。

マクロと同じ場所にコピーするだけですが...
使い方としては関数を選択すると「ユーザー定義関数」に表示されるようになります。
後は通常の関数と同じ使い方になります。
    • good
    • 1

No1さんの回答と同じですが・・・。



japan  napaj <----- =ReversText(A1)

Public Function ReversText(ByVal Text As String) As String
  ReversText = StrReverse(Text)
End Function

標準モジュールを利用して、広域な戻り値を持つ関数を作成したらいいです。
    • good
    • 4

マクロなら・・・。


ただし、A1の文字列をB1に表示しているので
工夫が必要ですが・・・。

Sub func()

Dim myStr As String
Dim strmy As String
Dim i As Integer

i = Len(Range("A1").Value) + 1
While i > 1
i = i - 1
strmy = Mid(Range("A1").Value, i, 1)
Select Case StrConv(strmy, vbWide)
Case "゛", "゜"
i = i - 1
strmy = Mid(Range("A1").Value, i, 2)
End Select
myStr = myStr & strmy
Wend

Range("B1").Value = myStr

End Sub

この回答への補足

自分の拙いマクロに関する知識でどうにかできましたv
ありがとうございます。

追加になって申し訳ないのですが、これをA1~A200で実行するにはどうすればよいのでしょうか?

補足日時:2006/11/22 13:07
    • good
    • 0

VBAを使えばできますが...


VBAにあるStrReverseという関数を使えば簡単です。

Function REVERSE(MOJI)
REVERSE = StrReverse(MOJI)
End Function

と設定して
B1=REVERSE(A1)
とすれば反転してくれます。
    • good
    • 5
この回答へのお礼

VBAは扱ったことがないので・・・、
御免なさい。

あとマクロのほう巧くできたのでv

ありがとうございました。

お礼日時:2006/11/22 13:10

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

このQ&Aを見た人はこんなQ&Aも見ています