ちょっと変わったマニアな作品が集結

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

よろしくお願いします。

このQ&Aに関連する最新のQ&A

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
    • 3

#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
    • 0

#1です。


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

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

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



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

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

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

マクロなら・・・。


ただし、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
    • 3
この回答へのお礼

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

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

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

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

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELで文字列の並べかえ

こんにちは。EXCELの関数を教えてください。マクロは使用しない方法でお願いします。
行いたい内容は、セル内に入力した「1234567の文字列を7654321」や、「abcdをdcba」に並べかえることです。
つまり、EXCELのセル内に入力した文字列を逆から並べ替えたいのです。
お時間のある方、ぜひ教えてください。
よろしくお願いします。

Aベストアンサー

   A   B C D E F G H   I
1 1234567 7 6 5 4 3 2 1 7654321
2 abcd   d c b a      dcba
3 ab    b a         ba

B1: =MID(REPT(" ",7-LEN($A1))&$A1,7-COLUMN(A1)+1,1)
I1: =TRIM(B1&C1&D1&E1&F1&G1&H1)

QExcelで順番を逆に

Excelで1,2,3,4,5のように入力されている行(または列)を5,4,3,2,1のように逆順に並べ替えるにはどういうコマンドを使ったらいいでしょうか。

宜しくお願いします。(Win98、Excel2000)

Aベストアンサー

列で説明しますが、行でも同様にできます。
セルA1~A5のデータをひっくり返すとします。
・B1~B5(となりのセル)に1,2,3,4,5と入力
・A1~B5を範囲指定
・メニューバーから データ-並び替えを選択
・「最優先されるキー」をB列にし、降順を指定して実行

これで、A列がひっくり返ります。

もし、となりのセルが開いてなければ、変わりに例えばJ1~J5を使ってもできます。このときは、範囲指定するときに まず、A1~A5を指定。次にCtrlを押しながらJ1~J5を指定 すればOKです。

Qエクセルにて セルの文字列を逆向きにするには?

A1に「qwer」とある場合、B1には「rewq」と文字を逆にしたいのですが、エクセルの関数のみで可能でしょうか?
A1の文字列の長さは任意とします。

関数では困難な場合はマクロでも良いのですが、簡単に出来るようでしたらお教え下さい。

Aベストアンサー

=逆さ文字(a1)

Public Function 逆さ文字(ByVal Text) As String
  Dim I    As Integer
  Dim L    As Integer
  Dim NewText As String
  
  L = Len(Text & "")
  For I = 1 To L
    NewText = NewText & Mid$(Text, L - I + 1, 1)
  Next I
  逆さ文字 = NewText
End Function

Qexcelのセル内の文字を180度回転(上下逆)にすることはできますか?

会議用の席札を作るのに,山折りにして両側に肩書き+氏名が出るようにしたいので,一部のセルの文字を逆さまにできれば便利だなあと思うのですが,セルの書式設定では横向きにしかできません。

形式を選択して貼り付け→半分を右向き,半分を左向きに90度回転させると,文字の間隔が違うようでもとの大きさの文字では入りきらず,修正の必要があるようです。

もちろんこの方法で作ることは可能なのですが,もしセル内の文字を180度回転する方法をご存じの方がいらしたら教えていただけないでしょうか。
できない,ということを確実にご存じであれば,その旨教えていただければ助かります。
よろしくお願いいたします。

Aベストアンサー

色々、やり方は有りますが、こんなのはどうですか

まず、普通に「肩書き」「氏名」を入力し、大きさを整えます
次に、それらのセルを範囲指定しコピー
次に、Shiftキーを押しながら、メニューの編集をクリックすると
「図のリンク貼り付け」が出てきますので、それで適当な位置に貼り付けて
位置を調整し、枠の真ん中の上に出ている色つきの丸をクリックして、回転させると、逆さまにする事が出来ます

Qエクセルで文字を180度回転させて表示させたい

回転の設定では90度までしかありません。
90度までしか回転できないのでしょうか?

Aベストアンサー

例えば、『歩』を180度回転してみます。
  1.セルに『歩』と入力。このセルのフォントがMSゴシックとします。
  2.フォントの窓で『MSゴシック』の前に半角『@』を入力して『@MSゴシック』にします。
  3.『歩』と入力したセルで、セルの書式設定→配置、方向を90度にします。

縦書きフォントにして90度回転させています。


次に、2文字の『王将』を180度回転させます。
  1.セルに『将王』と入力。このセルのフォントがMSゴシックとします。
  2.編集モードで『将』と『王』の間で Alt+Enter で改行します。
  3.フォントの窓で『MSゴシック』の前に半角『@』を入力します。
  4.『将王』と入力したセルで、セルの書式設定→配置、方向を90度にします。

文字を逆順に入力するのは『好み』かもしれません。3文字以上も同じようにできます。

Qexcel 左右対照入れ替え

初めて質問させて頂きます。
excelで困っていることがあり質問させて頂きました。
excel シートに入力されている内容を左右対照入れ替えしたいのです。

簡単に書きますと、
A1 に 数字の1
B1 に 数字の2
C1 に 数字の3
D1 に 計算式 =A1+ B1 + C1

と入力してあるファイルがあったとして、それを

A1 に 計算式 =A1+ B1 + C1
B1 に 数字の3
C1 に 数字の2
D1 に 数字の1

と左右対称に入れ替えたいのです。
なんらかの方法は無いでしょうか?
宜しくお願い致します。

Aベストアンサー

#2です。試しに汎用化してみました。自分で使うシチュエイションは思い浮かびませんが...
Sub test()
Dim i As Long
Const mirrorColumnsNo As Long = 4

ActiveSheet.Columns(1).Resize(, mirrorColumnsNo).Cut Destination:=Sheets(2).Columns(1).Resize(, mirrorColumnsNo)
For i = 1 To mirrorColumnsNo
Sheets(2).Columns(i).Cut Destination:=ActiveSheet.Columns(mirrorColumnsNo - i + 1)
Next i
ActiveSheet.Columns(1).Resize(, mirrorColumnsNo).Replace What:=ActiveSheet.Name & "!", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
End Sub
最後は、Sheet1にある式に、Sheet1!という参照が付いてうるさいので、仕方なく取り除いています。

#2です。試しに汎用化してみました。自分で使うシチュエイションは思い浮かびませんが...
Sub test()
Dim i As Long
Const mirrorColumnsNo As Long = 4

ActiveSheet.Columns(1).Resize(, mirrorColumnsNo).Cut Destination:=Sheets(2).Columns(1).Resize(, mirrorColumnsNo)
For i = 1 To mirrorColumnsNo
Sheets(2).Columns(i).Cut Destination:=ActiveSheet.Columns(mirrorColumnsNo - i + 1)
Next i
ActiveSheet.Columns(1).Resize(, mirrorColumnsNo).Repl...続きを読む

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qエクセル 文字列反転

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

Aベストアンサー

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

Sub test2()
Dim rng As Range
For Each rng In Selection
rng.Offset(0, 1) = StrReverse(rng)
Next
End Sub

Qエクセルで、頭に0をつけて数字の桁を揃える方法

エクセルで、必ず5桁の数字を入れる列があるとします。
ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。
任意文字として5桁の数字にしたいのですが、

何かいい方法はありませんでしょうか?

例)
A列 A列
50      00050
1000  ⇒  01000
11111    11111

どうぞよろしくお願いいたします。

Aベストアンサー

次の方法は如何でしょうか。
(1)表示だけで良いのならば、セルの書式設定→表示形式→ユーザ定義で00000を設定
(2)データとして必要ならば、空き列(仮にB列)B1に=TEXT(A1,"00000")を入力、下方向にコピー→B列をコピー→A列に形式を選択して貼り付けで「値」を選択→OK、B列を削除

Qエクセルの文字を反転させたい

エクセル2000を使っています。
ワードアートで書き込んだ文字の左右反転は可能でしょうか?
また、セルに書き込んだ文字の左右反転も出来ますか?

Aベストアンサー

こんにちは
>ワードアートで書き込んだ文字の左右反転は可能でしょうか?
No1さんとかぶりますが
↓こちらに図解つきページがあります^^
http://plaza.rakuten.co.jp/urawazakun/diary/200505230002/

又、ご質問とは関係ありませんが、ネタとして(笑)

文字を逆さまにする方法
http://plaza.rakuten.co.jp/urawazakun/diary/200505260002/

寝起きの駄回答でした \(*^◇~*)/ 


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング