[[20170619150435]] 『2行で1件になっているデータを1行にしたい』(みかん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『2行で1件になっているデータを1行にしたい』(みかん)

お世話になります。

2行で1件になっているデータを1行にしたいです。

たとえば以下のように2行になっているデータを

タイトル1 品名コード
タイトル2    品目
 1       100
 2        あああ
 3       200
 4       いいい
 5       300
 6        ううう

隣のシートに以下のように1行にしたデータを作りたいです。

タイトル    品目コード  品目 
 1        100    あああ 
 2        200    いいい 
 3        300    ううう

タイトル行は自分で編集するので、考慮しなくてもいいので
データの部分だけ式を使ったりでできる、何か良い方法はないでしょうか?

よろしくお願い致します。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


難しい事をしなくとも、例えばC列を作業列として、「=MOD(ROW(),2)」という式で埋めます。
次に、オートフィルタ機能を使って、0の行だけ表示。別のシートに範囲コピー。1に切り替えて、同様に列を変えてコピー。これでいかがでしょうか?
(???) 2017/06/19(月) 15:34

 Sheet1のA3から下にデータが入力されており、
 Sheet2の2行目以降に表示させるものとして

 Sheet2 
 A2: =INDEX(Sheet1!A:A,ROW()*2-1)
 B2: =INDEX(Sheet1!A:A,ROW()*2)

こんな感じですか?

(jjj) 2017/06/19(月) 15:41


マクロで(^^;;

Sub Sample()

    Dim S1 As Worksheet, S2 As Worksheet
    Dim I1 As Long, I2 As Long

    Set S1 = Sheets("Sheet1")                               'Sheet1 を S1 と表します
    Set S2 = Sheets("Sheet2")                               'Sheet2 を S2 と表します
    I2 = 1                                                  'I2 に 1を設定します

    For I1 = 1 To S1.Range("A" & Rows.Count).End(xlUp).Row  'I1を1からSheet1のA列の終わりの数まで1づつ増加してNextI1まで処理を繰り返します。
        If I1 - Int(I1 / 2) * 2 = 0 Then                    'I1が偶数なら
            S2.Cells(I2, 2).Value = S1.Cells(I1, 1).Value   'Sheet2のI2行2列目(B列)はSheet1のI1行1列目(A列)
            I2 = I2 + 1                                     'I2をカウントアップします
        Else
            S2.Cells(I2, 1).Value = S1.Cells(I1, 1).Value   'Sheet2のI2行1列目(A列)はSheet1のI1行1列目(A列)
        End If
    Next I1

End Sub
(パオ〜〜ン) 2017/06/19(月) 15:43


●???さん

確かにそうですね。
難しく考え過ぎてたかもしれないです。
やってみたら、難しい式を使わずにできそうですね。
ありがとうございました。

●jjjさん

この式です!
思っていた一覧を作れました。
ありがとうございました。

●パオ〜〜ンさん

今回は1ファイルだけでマクロを作るほどでもなさそうなのですが、
今後の参考にさせて頂きます。
ありがとうございました。

もし簡単にできそうだったら教えて下さい。

マクロを実行したところ、
sheet2のA列にはsheet1のA列の奇数行の値がセットされる
    B列にはsheet1のA列の偶数行の値がセットされる
ようなのですが、
sheet2のA列にはsheet1のB列の奇数行の値がセットされる
    B列にはsheet1のC列の偶数行の値がセットされる
ようにするにはどうすればよいでしょうか?

よろしくお願い致します。
(みかん) 2017/06/19(月) 16:34


みかんさん

現行
>sheet2のA列にはsheet1のA列の奇数行の値がセットされる
>      B列にはsheet1のA列の偶数行の値がセットされる

        If I1 - Int(I1 / 2) * 2 = 0 Then                    'I1が偶数なら
            S2.Cells(I2, 2).Value = S1.Cells(I1, 1).Value   'Sheet2のI2行2列目(B列)はSheet1のI1行1列目(A列)
            I2 = I2 + 1                                     'I2をカウントアップします
        Else
            S2.Cells(I2, 1).Value = S1.Cells(I1, 1).Value   'Sheet2のI2行1列目(A列)はSheet1のI1行1列目(A列)
        End If

ですから、
>sheet2のA列にはsheet1のB列の奇数行の値がセットされる
>     B列にはsheet1のC列の偶数行の値がセットされる
とするためには、上記の部分を以下のようにしていただければできるかと...

        If I1 - Int(I1 / 2) * 2 = 0 Then                    'I1が偶数なら
            S2.Cells(I2, 2).Value = S1.Cells(I1, 3).Value   'Sheet2のI2行2列目(B列)はSheet1のI1行3列目(C列)
            I2 = I2 + 1                                     'I2をカウントアップします
        Else
            S2.Cells(I2, 1).Value = S1.Cells(I1, 2).Value   'Sheet2のI2行1列目(A列)はSheet1のI1行2列目(B列)
        End If

(パオ〜〜ン) 2017/06/20(火) 13:37


●パオ〜〜ンさん

カッコの中の1がA列、2がB列、3がC列と言うことだったんですね。
コメントまで書いてくれてたのに理解不足ですみません。
動かしてみたらうまくできました。
ありがとうございました。

(みかん) 2017/06/20(火) 19:01


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.