Excelで


1りんご・ばなな・もも
2みかん・さくらんぼ・ぶどう

というのを、

1りんご
1ばなな
1もも
2みかん
2さくらんぼう
2ぶどう

というように変換させる簡単な方法をご存知の方いらっしゃいますか?
ご教授ください。

回答の条件
  • 1人2回まで
  • 登録:2008/06/24 10:28:26
  • 終了:2008/06/24 13:30:17

ベストアンサー

id:Mook No.6

Mook回答回数1312ベストアンサー獲得回数3912008/06/24 12:04:20

ポイント150pt

VBA を使用した例ですがどうでしょうか。


シートタブを右クリックし「コードの表示」を選択し、そこに下記を貼り付けて、

EXCELに戻って、Alt+F8でsepName を選択して実行してください。


元のデータを書き換えてしまいますので、バックアップを取ってからお試しください。

Sub sepName()
    Dim lastRow As Long, i As Long, j As Long
    lastRow = Range("A" & Rows.Count).End(xlUp).Row
    For i = lastRow To 1 Step -1
        For j = 6 To 3 Step -1
            If Cells(i, j).Value <> "" Then
                Rows(i).Copy
                Rows(i + 1).Insert Shift:=xlDown
                Cells(i + 1, 2).Value = Cells(i, j).Value
                Cells(i + 1, 3).Resize(1, 10).Value = ""
                Cells(i, j).Value = ""
            End If
        Next
    Next
End Sub
id:sapporobeer

すごいぃ!!!こっちの方が更に自分が求めていた形です!

ありがとうございます。

2008/06/24 13:23:31

その他の回答(6件)

id:hiko3karasu No.1

hiko3karasu回答回数1058ベストアンサー獲得回数252008/06/24 10:40:03

ポイント5pt

ああ、2度手間だ。

 

数字は必ず1文字?

文字は必ず3種類?

文字は必ず「・」で区切られている?

id:sapporobeer

数字は、1~3488までです。

文字は人の名前になりますので、無数です。

また、文字は各セルで区切られています。

2008/06/24 10:46:05
id:arhbwastrh No.2

arhbwastrh回答回数447ベストアンサー獲得回数232008/06/24 10:42:18

ポイント10pt

A1セル 1りんご・ばなな・もも

D1セル =FIND("・",A1)-1

E1セル =FIND("・",A1,D1+2)

F1セル =LEN(A1)

G1セル =LEFT(A1,D1)

H1セル =LEFT(A1,1) & MID(A1,D1+2,E1-D1-2)

I1セル =LEFT(A1,1) & RIGHT(A1,F1-E1)

区切り文字が「・」以外なら、"・"の部分を"/"とか"@"などに変えてください。

また、複数行対応したいときは、それぞれのセルをクリックして、セルの右下の黒い四角の部分をクリックし、下方向にドラックさせてください。

id:sapporobeer

確かに、1りんご1ばなな1ももになりました。

それが、

1りんご

1ばなな

1もも

というな並びを自動的に出来るものを希望していました。惜しいです。

2008/06/24 10:53:27
id:arhbwastrh No.3

arhbwastrh回答回数447ベストアンサー獲得回数232008/06/24 10:55:02

ポイント10pt

では、もう少し条件を細かく書いてください。

仕様がわからないと、中々ご希望の回答が出来ませんので・・

id:sapporobeer

申し訳ありませんでした。

391 阿部 新井 飯岡 岩崎 重田

392 花田 安田 山下

393 岩本 梅津 久保 小林 服部

(一つ一つはセルに入っています)

というのを、

391阿部

391新井

392花田

というように縦1列に並べたかったのです。

2008/06/24 11:04:24
id:hiko3karasu No.4

hiko3karasu回答回数1058ベストアンサー獲得回数252008/06/24 11:14:08

ポイント10pt

一つ一つはセルに入っています

の意味ですが

A1のセルに391

B1のセルに阿部

C1のセルに新井

・・・・

ということでしょうか?

それとも

A1のセルに 「391 阿部 新井 飯岡 岩崎 重田」

でしょうか?

 

横に最高何人分名前がありますか?

名前の区切りはスペースだけ?

氏名はくっついている?

 「阿部ジョージ」「新井素子」

 「阿部 ジョージ」「新井 素子」

id:sapporobeer

>一つ一つはセルに入っていますの意味ですが・・

おっしゃるとおり、A1のセルに391B1のセルに阿部、・・・となります。

あと横にはMax5人ありますが、1~5人でまちまちです。

また、氏名はくっついています。

2008/06/24 11:21:04
id:cajpya No.5

cajpya回答回数12ベストアンサー獲得回数02008/06/24 11:27:35

ポイント80pt

ツール→マクロ→Visual BASIC editer

挿入→標準モジュール

出てきたウィンドウに以下を貼り付け、F5をおしてください。

(マクロを選択が出てきたらtestというマクロを実行してください

Sub test()
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight
    x = 3
    y = 1
    i = 0
    y2 = 1
    
Do While i = 0
    If Cells(y, x).Value = "" Then
        y = y + 1
        x = 3
        
        If Cells(y, x).Value = "" Then
            i = 1
        End If
    Else
        a = Cells(y, x).Value
        Cells(y2, 1).Value = Cells(y, 2).Value & a
        y2 = y2 + 1
        x = x + 1
    End If
Loop
    
End Sub
id:sapporobeer

ありがとうございます!ビンゴです!!

2008/06/24 13:20:17
id:Mook No.6

Mook回答回数1312ベストアンサー獲得回数3912008/06/24 12:04:20ここでベストアンサー

ポイント150pt

VBA を使用した例ですがどうでしょうか。


シートタブを右クリックし「コードの表示」を選択し、そこに下記を貼り付けて、

EXCELに戻って、Alt+F8でsepName を選択して実行してください。


元のデータを書き換えてしまいますので、バックアップを取ってからお試しください。

Sub sepName()
    Dim lastRow As Long, i As Long, j As Long
    lastRow = Range("A" & Rows.Count).End(xlUp).Row
    For i = lastRow To 1 Step -1
        For j = 6 To 3 Step -1
            If Cells(i, j).Value <> "" Then
                Rows(i).Copy
                Rows(i + 1).Insert Shift:=xlDown
                Cells(i + 1, 2).Value = Cells(i, j).Value
                Cells(i + 1, 3).Resize(1, 10).Value = ""
                Cells(i, j).Value = ""
            End If
        Next
    Next
End Sub
id:sapporobeer

すごいぃ!!!こっちの方が更に自分が求めていた形です!

ありがとうございます。

2008/06/24 13:23:31
id:SALINGER No.7

SALINGER回答回数3454ベストアンサー獲得回数9692008/06/24 12:45:37

ポイント50pt

ExcelVBAを使った方法です。

使ったことがなければ以下を参考に。

http://www.officepro.jp/excelvba/ini/index1.html

http://www.officepro.jp/excelvba/ini/index2.html

http://www.officepro.jp/excelvba/ini/index3.html


次のコードを標準モジュールに貼り付けて、データのあるシートを開いた状態で実行してください。

新規シートが追加されて、データを並べ替えて表示します。

ub Macro()
    Dim ws As Worksheet
    Dim ns As Worksheet
    Dim c As Integer
    Dim r1 As Long
    Dim r2 As Long
    
    Set ws = ActiveSheet
    Set ns = Worksheets.Add
    
    r1 = 1
    r2 = 1
    While ws.Cells(r2, 1).Value <> ""
        c = 2
        While ws.Cells(r2, c).Value <> ""
            ns.Cells(r1, 1).Value = ws.Cells(r2, 1).Value
            ns.Cells(r1, 2).Value = ws.Cells(r2, c).Value
            r1 = r1 + 1
            c = c + 1
        Wend
        r2 = r2 + 1
    Wend
End Sub
id:sapporobeer

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

2008/06/24 13:27:08

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

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

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

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

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