プロが教えるわが家の防犯対策術!

例えば以下のようなデータがあります
◆test
aaaaaaaaaaaa
iiiiiiiiiiiiiiiiiiiiiiiiiii
uuuuuuuuuuu
eeeeeeeeeeee
oooooooooooo
◆test2
kaaaaaaaaaaa
kiiiiiiiiiiiiiiiiiiiiiiiii
kuuuuuuuuuu
keeeeeeeeeee
kooooooooooo


これを、
◆test aaaaaaaaaaaa
    iiiiiiiiiiiiiiiiiiiiiiiiiii 
    uuuuuuuuuuu
    eeeeeeeeeeee
    oooooooooooo
◆test2 kaaaaaaaaaaa
     kiiiiiiiiiiiiiiiiiiiiiiiiii 
    kuuuuuuuuuuu
    keeeeeeeeeeee
    koooooooooooo

こんな感じに並べかえたいのですが、どなたかよい方法をご存じないでしょうか。
当方Excelはおろか、マクロVBAなどの知識が皆無です。。。

質問者からの補足コメント

  • はい、添付の図の通りです。
    シートも2になって問題ありません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/05/12 22:22

A 回答 (3件)

データのセルの位置情報は添付の図で、あってますか。


1)変更前はA列に1行からデータが並ぶ(A列のみであり、他の列にはデータなし)
2)変更後は、A列とB列にデータが並ぶ
3)A列に並べるデータは、先頭が◆で始まる文字列とする。
4)変更前のデータはSheet1とし、変更後のデータはSheet2としますが良いですか。
「Excelを使って行列変換をしたい(大量」の回答画像1
この回答への補足あり
    • good
    • 0

標準モジュールに以下のマクロを登録し、実行してください。


尚、実行時、Sheet1,Sheet2がないとエラーになります。
---------------------------------------------
Option Explicit
Public Sub 並べ替え()
Dim sh1, sh2 As Worksheet
Dim maxrow1, row1, row2 As Long
Dim str As String
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
sh2.Cells.Clear
maxrow1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row 'Sheet1 A列最大行
row2 = 1
For row1 = 1 To maxrow1
str = sh1.Cells(row1, "A").Value
If Left(str, 1) = "◆" Then
If sh2.Cells(row2, "A").Value <> "" Then
row2 = row2 + 1
End If
sh2.Cells(row2, "A").Value = str
Else
sh2.Cells(row2, "B").Value = str
row2 = row2 + 1
End If
Next
MsgBox ("完了")
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございます!参考にさせていただきます!

お礼日時:2017/05/13 19:11

私のように「マクロVBAなどの知識が皆無」な人向けです。


1.添付図左端を元データとして作業開始
2.列Aを選択して、マウスの右クリックから[挿入]をツン
※元データのシートを弄りたくなければ、列Aを別シートの列Bにコピーすれば好いだけのこと!
※閑話休題。
3.式 =IF(ISERROR(FIND("◆",B1)),"",B1) を入力したセル A1 を下方に
 ̄ ̄ズズーッとオートフィル
4.式 =IF(A1=B1,NA(),B1) を入力したセル C1 を下方にズズーッとオー
 ̄ ̄トフィル
※以上の結果を添付図中央に示しています。
5.列A~Cを選択して、[コピー]→[値の貼り付け]を実行
6.列A~Cを選択したマンマ、Ctrl+G をツンした後で[セル選択]をツン
7."定数"に目玉を入れ替え、"エラー値"以外のチェック外して、[OK]を
 ̄ ̄ツンして即座に Deleteキーを「エイヤッ!」と叩き付け!
※以上の結果を添付図右端に示しています。
8.範囲 B1:C1 を選択して、右クリックから[削除]→"上方向にシフト"
 ̄ ̄→[OK]
※さぁ、最終段階です。
9.列Cを選択して、Ctrl+G をツンした後で[セル選択]をツン
10."空白セル"のみに目玉を入れて、[OK]をツン
11.[ホーム]→[セル <削除>]→"シートの行を削除"
12.列B削除
「Excelを使って行列変換をしたい(大量」の回答画像3
    • good
    • 1
この回答へのお礼

ありがとうございます!!
こちらの手順でも試してみます!

お礼日時:2017/05/13 19:13

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