こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ドイツ語前置詞に格支配表記

エクセルで、ドイツ語前置詞に格支配を表すために、3格支配なら〝+3〟、4格支配なら〝+4〟を、小さく前置詞の右斜め上にひっ付けたいのですが、可能でしょうか?できるのであればどなたか教えていただけませんか? 

ただひっ付けたらこうなのですが↓

aus+3

投稿日時 - 2011-02-18 22:19:21

QNo.6533172

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

こんばんは!
参考になるかどうかわかりませんが・・・

単語が1セルに一つずつ入っているのではなく、長文が1セルに入っているのだと思います。
(1セルに1単語であれば少しは簡単です)

VBAでの一例です。
Sheet1のA列に文章が入っているとします。
Sheet2の↓の画像のように表を作成しておきます。
A列 → 2格支配
B列 → 3格支配
C列 → 4格支配
として、1行目に格数値を入れています。

1文字ずつ舐めるように調べるのも大変ですので、一つの方法としてドイツ語も英語のように単語ごとにスペースがあると思います。
とりあえず1セルに1単語に分けます。
A列すべてを範囲指定 → データ → 区切り位置 → 「カンマやタブなどの・・・」を選択 → 次へ
→ 「スペース」にチェックを入れ → 次へ → ・・・ 「完了」
これで1単語ずつに区切られますので、その後にマクロを実行します。

Alt+F11キー → VBE画面が出ますので標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i, j, k, L As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
For i = 1 To ws1.Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To ws1.Cells(i, Columns.Count).End(xlToLeft).Column
For k = 2 To 8
For L = 1 To 3
If ws1.Cells(i, j) = ws2.Cells(k, L) Then
ws1.Cells(i, j) = ws1.Cells(i, j) & "+" & ws2.Cells(1, L)
End If
Next L
Next k
Next j
Next i
Dim str, buf As String
For i = 1 To ws1.Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To ws1.Cells(i, Columns.Count).End(xlToLeft).Column
str = Cells(i, j)
buf = buf & str & " "
Next j
ws1.Cells(i, 1) = buf
buf = ""
Next i
For i = 1 To ws1.Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To Len(ws1.Cells(i, 1))
str = Mid(ws1.Cells(i, 1), j, 1)
If str = "+" Then
ws1.Cells(i, 1).Characters(Start:=j, Length:=2).Font.Superscript = True
End If
Next j
Next i
ws1.Range("B:IV").ClearContents
ws1.Columns(1).AutoFit
End Sub 'この行まで

尚、一旦マクロを実行すると元に戻せませんので、別Sheetにコピー&ペーストしてマクロを試してみてください。

参考になれば良いのですが
外していたらごめんなさいね。m(__)m

投稿日時 - 2011-02-20 02:49:41

あなたにオススメの質問