エクセルの名簿で1セル内に例えば、”山田太郎tarouyamada”とあるものを2つのセル”山田太郎”と”tarouyamada”に分割したいのですが、数千件あって共通した特定文字も無く(しいて挙げれば全角文字と半角文字)困っています。

何とか一括で処理できないものでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2006/08/30 17:35:18
  • 終了:2006/08/31 07:17:42

ベストアンサー

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/08/30 18:01:32

ポイント20pt

マクロだと 簡単なんですけどね。

マクロが使えるのならば 以下のもので試してみてください。

A列にあるものを A列とB列に分けます。

最初の

For a = 1 To 10000

の10000は、行数分に変更してください。

Sub Macro1()

'

' Macro1 Macro

'

' Keyboard Shortcut: Ctrl+q

'

For a = 1 To 10000

b = Range("A" & a)

If Len(b) > 0 Then

e1 = ""

e2 = ""

For c = 1 To Len(b)

d = Mid(b, c, 1)

If LenB(StrConv(d, vbFromUnicode)) = 2 Then

'全角

e1 = e1 & d

Else

'半角

e2 = e2 & d

End If

Next c

Range("A" & a) = e1

Range("B" & a) = e2

End If

Next a

End Sub

id:WATANABE

これで問題解決です。ありがとうございました。

2006/08/31 00:19:24

その他の回答(4件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/08/30 18:01:32ここでベストアンサー

ポイント20pt

マクロだと 簡単なんですけどね。

マクロが使えるのならば 以下のもので試してみてください。

A列にあるものを A列とB列に分けます。

最初の

For a = 1 To 10000

の10000は、行数分に変更してください。

Sub Macro1()

'

' Macro1 Macro

'

' Keyboard Shortcut: Ctrl+q

'

For a = 1 To 10000

b = Range("A" & a)

If Len(b) > 0 Then

e1 = ""

e2 = ""

For c = 1 To Len(b)

d = Mid(b, c, 1)

If LenB(StrConv(d, vbFromUnicode)) = 2 Then

'全角

e1 = e1 & d

Else

'半角

e2 = e2 & d

End If

Next c

Range("A" & a) = e1

Range("B" & a) = e2

End If

Next a

End Sub

id:WATANABE

これで問題解決です。ありがとうございました。

2006/08/31 00:19:24
id:tomot99 No.2

tomot99回答回数36ベストアンサー獲得回数12006/08/30 18:02:31

ポイント20pt

A1に山田太郎tarouyamadaがあるとして

=LEFT(A1,LENB(A1)-LEN(JIS(A1)))

で漢字

=RIGHT(A1,LEN(A1)-LENB(A1)+LEN(JIS(A1)))

で半角アルファベット

でいかがでしょう?

id:WATANABE

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

2006/08/31 00:19:32
id:Baku7770 No.3

Baku7770回答回数2832ベストアンサー獲得回数1812006/08/30 18:03:15

ポイント20pt

 必ず、”山田太郎tarouyamada”のように日本語名が前半に来て、日本語名が全角なら、

=LENB()-LEN()

で全角文字数が計算されますので

left関数とrightb関数を使えば簡単です。

A1に入っていれば、

=LEFT(A1,LENB(A1)-LEN(A1))

=RIGHTB(A1,2*LEN(A1)-LENB(A1))

id:WATANABE

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

2006/08/31 00:19:36
id:cateyes No.4

cateyes回答回数89ベストアンサー獲得回数32006/08/30 18:16:52

ポイント20pt

http://www

エクセルの関数を使えば可能です。

”山田太郎tarouyamada”などのはいっているセルを

A1にはいっているものとします、

B1に『=LENB(A1)-LEN(A1)』

C1に『=MID(A1,1,B1)』

D1に『=MID(A1,B1+1,LENB(A1))』

で、C1に「山田太郎」、D1に「tarouyamada」

と入ります。

B1・C1・D1の書式はコピーすれば順次B2などに上手に

コピーされるので問題なく同じ書式をコピー出来ます。

エクセルのマクロやモジュールを使えばもっと上手に

切り分けられますが、WATANABEさんが出来るのか不明なので

セルに簡単に記載する方法で書きました。

id:WATANABE

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

2006/08/31 00:19:40
id:e_no No.5

e_no回答回数1ベストアンサー獲得回数02006/08/30 18:37:24

ポイント20pt

初めて回答してみます。

遠まわしな方法かもしれませんが、文字列の横に5列ほど新規で列を作成して、まず1列目(A1)に文字列"山田太郎yamadataro"だとしたら2列目(A2)に"=LENB(A1)"3列目(A3)に"=LEN(A1)"4列目(A4)に"=A2-A3"とする。

すると、A4セル内の数字が漢字の個数となります。

よって、5列目(A5)に"=LEFT(A1,A5)"とすると"山田太郎"と表示されて6列目に"=RIGHT(A1,A3-A4)"とすると"yamadataro"と表示されます。

とりあえず分離は出来たのでセル列5及び6をドラッグしてコピーの後、同列で形式を指定して貼り付け→値をすれば、文字列として存在します。

その後残りの計算列を削除すればよいと思います

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません