Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

セル内でテキストを逆方向(左から右)に表示する

15,740 views
Skip to first unread message

竹仙人

unread,
Dec 2, 2009, 7:45:01 PM12/2/09
to
Excel2007を使用しています。セル内でテキストを縦書きに変換すると
右から左方向に表示されますが、逆方向(左から右)に表示する
簡単な方法があるでしょうか?
私は、文字数を計算して前後逆に入れ替えています。
2行ぐらいなら簡単ですがそれ以上となると諦めています。
よろしくご教示願います。

sum

unread,
Dec 3, 2009, 11:44:40 AM12/3/09
to
セルにそのままは無理と思います。

挿入→テキストグループのオブジェクトで、Microsoft Word文書オブジェクトを挿入し、
オブジェクトの書式設定で、塗りつぶしと線の色をなしにして、オブジェクト全体の
サイズを調整します。
このオブジェクト内に、縦書き1行分のテキストボックスを並べて配置し、
テキストボックスも塗りつぶしなし、線の色なしに設定し、
テキストボックスタブで、テキストボックスと文字列の間隔の上下左右の値を、
できるだけ小さな値に変更します。
テキストボックスは、[Ctrl]キー+ドラッグでコピーができます。

一番左のテキストボックスの枠を選び、カーソルが十字矢印になったら右クリックし、
テキストボックスのリンクの作成を選び、左から2番目のテキストボックスを選択します。
同様に2番目から3番目、3番目から4番目へと、テキストボックスのリンクを作成します。

リンクの作成が済んだら、一番左のテキストボックスに文字を入力します。
テキストボックスから文字が溢れると、リンクした次のテキストボックスに
文字が自動的に流し込みされて行きます。
Excelのテキストボックスには、このリンク機能が無いので、Wordオブジェクトを
貼り付けて行ってみました。
簡単と言えるかどうか分かりませんが、一方法として参考にしてください。

--
sum (Susumu Zenba)


"竹仙人" <@discussions.microsoft.com> wrote in message
news:7070355C-E2C0-4108...@microsoft.com...

竹仙人

unread,
Dec 3, 2009, 11:47:01 PM12/3/09
to
早速のご回答ありがとうございました。
作成には成功しましたが、セル内にオブジェクトを挿入したまま
その後の編集するときに色々不都合が生じました。
単純にセル内の書式設定で縦書き左読み表記とすることは、
できないものでしょうか?
基本的にエクセルは横書き左読み左表記のような気がしますが


"sum" wrote:

> .
>

sum

unread,
Dec 4, 2009, 8:55:01 AM12/4/09
to
> 基本的にエクセルは横書き左読み左表記のような気がしますが
日本語の場合、
横書きは左→右への記述で上→下方向へ改行
縦書きは上→下への記述で右→左方向へ改行
となります。
Excelの機能というより、言語による文字の記述方向になります。
アラビア語などのように、横書きで右→左へ記述するものもあります。

縦書きで左→右への記述は、横書きで下→上への記述と同じことになり、
記述する方向は、OSで設定されている言語により決定されています。

Excelのセルに、縦書きで左から右へ書く場合の、前回と違う方法としては、
セルを縦書きに設定しておき、数式バーで[Alt]+[Enter]を複数行入力して、
最下行から順に文字列を入力していけば、縦書きで左→右へと
記述したようになると思います。

--
sum (Susumu Zenba)


"竹仙人" <@discussions.microsoft.com> wrote in message

news:1E158D76-8743-4F13...@microsoft.com...

竹仙人

unread,
Dec 4, 2009, 8:15:01 PM12/4/09
to
二度の解答に感謝します
今回の方法が、私の作業にはあっているようです。
文字数を数える手間は、省けませんが、
以前よりも作業効率が上がりました。
ありがとうございました。

keiji kounoike

unread,
Dec 5, 2009, 6:26:08 AM12/5/09
to
マクロを利用するなら、もう少し作業は楽になるかも知れません。
縦書きで各セルに通常通り入力します。変換したいセル範囲を選択した状態で下
のマクロRight2Leftを実行。元に戻す場合は、同じように選択して、Left2Right
を実行。ただし、各セルとも一行の文字数は同じである必要があります。違う場
合は、違うセルごとに実行する必要があります。

2007でのマクロの使用方法の概略は、
1)Alt+F11で、Visual Basic Editorの画面が出ます。
2)挿入 → 標準モジュールでコードを入力する画面がでます。
そこに下記のマクロをコピーして貼り付けます。
3)再度Alt+F11を押すと、標準の画面戻ります。
4)名前を付けて保存 → Excelマクロ有効ブックで保存します。
5)開発→セキュリティ → 信頼できる場所にあるディレクトリに先に保存したブッ
クを移動します。

このブックを開いて、データがあるブックを同一アプリケーション内で開きます。
開発 → マクロで、Right2Leftを選択して実行。

Sub Right2Left() '右並びを左並びに変換
Dim rng As Range
Dim s1 As String, ss() As String
Dim i As Long, l As Long, m As Long, n As Long, co As Long

n = Application.InputBox("一行の文字数を入力", Type:=2)
If n = 0 Then Exit Sub
For Each rng In Selection
s1 = Replace(rng.Value, Chr(10), "")
m = Len(s1)
co = Int(m / n)
ReDim ss(co)
l = 1
For i = 0 To co
ss(co - i) = Mid(s1, l, n) & Chr(10)
l = l + n
Next
ss(co) = Replace(ss(co), Chr(10), "")
rng.Value = Join(ss, "")
Next
End Sub

Sub Left2Right() 'Right2Leftで変換した文字列を元に戻す
Dim rng As Range
Dim s1 As String, ss() As String
Dim i As Long, l As Long, m As Long, n As Long, co As Long

n = Application.InputBox("一行の文字数を入力", Type:=1)
If n = 0 Then Exit Sub
For Each rng In Selection
s1 = Replace(rng.Value, Chr(10), "")
m = Len(s1)
co = Int(m / n)
ReDim ss(co)
l = m - n + 1
For i = 0 To co
ss(i) = Mid(s1, l, n) & Chr(10)
l = l - n
If l < 0 Then l = 1: n = m - n * co
Next
ss(co) = Replace(ss(co), Chr(10), "")
rng.Value = Join(ss, "")
Next
End Sub

竹仙人

unread,
Dec 6, 2009, 2:41:01 AM12/6/09
to
感謝致します。
マクロの文字を見て一瞬目の前が
真っ黒になりましたが、(55歳のオヤジギャグです)
大変丁寧な解説のおかげで
訳もわからず書かれているとおりに実行しました。
途中の”開発”などと聞いたこともない文字にどぎまぎしましたが、
ヘルプを参照して何とか乗り越えました。
感動しました。涙が溢れ目の前が真っ暗になりました。
これです。
ありがとうございました。

keiji kounoike

unread,
Dec 6, 2009, 9:10:32 PM12/6/09
to
実は前回のマクロにはミスがあり、訂正したものを一応書いておきます。

ミス内容:文字数が一行の文字数より小さい場合エラーとなります。
また元に戻すマクロ Right2Left は複数セルに適用した場合正常に動作しない。

Sub Right2Left() '右並びを左並びに変換
Dim rng As Range
Dim s1 As String, ss() As String
Dim i As Long, l As Long, m As Long, n As Long, co As Long

n = Application.InputBox("一行の文字数を入力", Type:=2)
If n = 0 Then Exit Sub
For Each rng In Selection
s1 = Replace(rng.Value, Chr(10), "")
m = Len(s1)
co = Int(m / n)

If m > n Then


ReDim ss(co)
l = 1
For i = 0 To co
ss(co - i) = Mid(s1, l, n) & Chr(10)
l = l + n
Next
ss(co) = Replace(ss(co), Chr(10), "")
rng.Value = Join(ss, "")

End If
Next
End Sub

Sub Left2Right() 'Right2Leftで変換した文字列を元に戻す
Dim rng As Range
Dim s1 As String, ss() As String
Dim i As Long, l As Long, m As Long, n As Long, co As Long

Dim nn As Long

n = Application.InputBox("一行の文字数を入力", Type:=1)

nn = n


If n = 0 Then Exit Sub

For Each rng In Selection
s1 = Replace(rng.Value, Chr(10), "")
m = Len(s1)
co = Int(m / n)

If m > n Then


ReDim ss(co)
l = m - n + 1
For i = 0 To co
ss(i) = Mid(s1, l, n) & Chr(10)
l = l - n
If l < 0 Then l = 1: n = m - n * co
Next
ss(co) = Replace(ss(co), Chr(10), "")
rng.Value = Join(ss, "")

End If
n = nn
Next
End Sub


竹仙人 wrote:
> 感謝致します。
> マクロの文字を見て一瞬目の前が
> 真っ黒になりましたが、(55歳のオヤジギャグです)

竹仙人

unread,
Dec 6, 2009, 11:59:02 PM12/6/09
to
再三のご指導ありがとうございます。
version1でも不都合無く作業を続行しています。
ただ残念なことに、折角の訂正版ですが、ミスを訂正する能力が無く
version2への移行については鋭意勉強努力中です。
君子終日乾乾 合掌

"keiji kounoike" <"kounoike A | T ma.Pik" wrote:

keiji kounoike

unread,
Dec 7, 2009, 6:24:10 AM12/7/09
to
修正は単に前回のマクロをすべて削除(delキー等で)して、修正したコードを
前回と同じようにコピーして貼り付けて、ブックを上書き保存するだけです。参
考までに。

私もほぼ竹仙人さんと同年代ですが、難しい言葉を知っているんですね。「君子
終日乾乾」初めて目にする言葉でなんの意味か分かりませんでした。

竹仙人

unread,
Dec 8, 2009, 2:35:01 AM12/8/09
to
keiji kounoikeさんへ

重ね重ねの回答ありがとうございます
お尋ねの件 
易経の言葉です。物事を修め立派な人になろうと思ったら
終日、日夜を分かたず勉め励まなければならぬ。
要はもっとガンバロといった意味で私は使っています
因みにこの質問は、件の易経をエクセルで一枚の表にして
一般の人にも使いやすいものにならないかと思い始めました。
もっともそんな人は、ごく少数かもしれませんが。
ついでのついでにもう一つ質問があります。
エクセルの表自体を根本的に右から左にスクロールすることは可能でしょうか?
これができるとカッコいい表になるのですが。


"keiji kounoike" <"kounoike A | T ma.Pik" wrote:

keiji kounoike

unread,
Dec 8, 2009, 8:21:41 PM12/8/09
to
右から左にスクロールするとは、シートのレイアウトがA列が一番右に来てB
列、C列と左方向に配列されていることを意味しているのでしょうか。

それなら可能ですが、その場合、縦書きをした場合、わざわざ左から右へとセル
文字を並び替える意味がよく分かりませんが。(不自然な並びになるのでは)

レイアウトの反転方法は、Excel2003なら簡単にできるのですが、2007の場合、
説明するのが面倒なので、Google で”excel 右から左 ”で検索するといくつか出
てきますが、適当なのを選んで見てみて下さい。

竹仙人 wrote:
> keiji kounoikeさんへ
>

> ついでのついでにもう一つ質問があります。
> エクセルの表自体を根本的に右から左にスクロールすることは可能でしょうか?
> これができるとカッコいい表になるのですが。
>

0 new messages