アプリ版:「スタンプのみでお礼する」機能のリリースについて

Item1 X 1 Y 2 Z 3
Item2 X 1 Y 2 Z 3
Item3 X 1 Y 2 Z 3 W 4




のように、一番左の列を除いて一行につき6つか8つ並んでいる項目を

Item1 X 1
Item1 Y 2
Item1 Z 3
Item2 X 1
Item2 Y 2
Item2 Z 3
Item3 X 1
Item3 Y 2
Item3 Z 3
Item3 W 4




という風に並び替えたいのですが、どなたかわかる方はいらっしゃいますでしょうか。

A 回答 (5件)

添付図参照



Sheet2 において、
1.セル A1、B1 にそれぞれ右側の式を入力
 ̄ ̄ A1: =OFFSET(Sheet1!$A$1,(ROW(A1)-1)/4,)
 ̄ ̄ B1: =OFFSET(Sheet1!$B$1,(ROW(B1)-1)/4,COLUMN(A1)-1+MOD((ROW(A1)-1)*2,8))
2.セル B1 を右隣にオートフィルした後で、範囲 A1:C1 を下方にオート
 ̄ ̄フィル(添付図下段左)
3.A~C列全体を選択して、[コピー]⇒[値の貼り付け]⇒B列のみを選択
 ̄ ̄⇒Ctrl+G⇒“セル選択”⇒“定数”に目玉入れ、かつ、“数値”以外のチェック
 ̄ ̄外し⇒[OK](添付図下段真ン中)
4.[ホーム]⇒[セル <削除>]⇒[シートの行を削除](添付図下段右)
「エクセルの行を2項目ずつ縦に変換する方法」の回答画像5
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!できました!
他の質問でもOFFSETを使っていたので真似してみてはいたのですがなかなかうまくいかずに困っていたので、とても感謝しています。

これまで参考にしていたものとの違いはA1とB1がそれぞれ4で割ってあることと、B1の方にMODが入っているかどうかでした。

お礼日時:2019/11/20 09:12

こんばんは!



VBAになりますが、一例です。
↓の画像のような配置で元データはSheet1にあり、Sheet2に表示するとします。
標準モジュールにしてください。

Sub Sample1() '//この行から//
 Dim i As Long, j As Long
 Dim cnt As Long, wS As Worksheet
  Set wS = Worksheets("Sheet2")
   wS.Range("A:C").ClearContents
    With Worksheets("Sheet1")
     For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
      For j = 2 To .Cells(i, Columns.Count).End(xlToLeft).Column Step 2
       cnt = cnt + 1
        wS.Cells(cnt, "A") = .Cells(i, "A")
        wS.Cells(cnt, "B").Resize(, 2).Value = .Cells(i, j).Resize(, 2).Value
      Next j
     Next i
    End With
     wS.Activate
     MsgBox "完了"
End Sub '//この行まで//

※ データ変更があるたびにマクロを実行する必要があります。m(_ _)m
「エクセルの行を2項目ずつ縦に変換する方法」の回答画像4
    • good
    • 0
この回答へのお礼

詳細なご回答ありがとうございます!!
今回は時間がなかったもので慣れている方法でやってみましたが、次回のために学んでおこうと思います。

お礼日時:2019/11/20 08:49

データ規模などが分らないので、簡単な方法として


こちらは、参考になりますでしょうか?

https://support.office.com/ja-jp/article/%E8%A1% …

https://support.office.com/ja-jp/article/transpo …
    • good
    • 0

マクロ(VBA)を使う事になると思いますが、結果の表示方法は次のどれになりますか?


① 別シートに書き出す
② 左側に3列追加してそこに書き出し、元のデータは残す。
③ 左側に3列追加してそこに書き出し、元のデータは消す。
④ 元のデータの下に書き出し、元のデータは消す。
⑤ その他 ⇒ 具体的に説明して下さい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
もともと①か③を考えていました。
とりあえず他の方法でできましたので、時間がある時にVBAでもやってみようと思います。

お礼日時:2019/11/20 08:45

VBAを使うといいと思います。

    • good
    • 1
この回答へのお礼

迅速な回答ありがとうございました!!

お礼日時:2019/11/20 08:40

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