見出し画像

Rakuten SKUプロジェクト「select.csv」変換ツール

弊社でも Rakuten の SKUプロジェクト が間もなく始まることを受け、関連する各システムの変更作業を急いで行っています。
このプロジェクトの影響を最も受ける部分の一つが、CSVファイルを使用した商品登録プロセスです。

  • これまで、商品情報を登録する際には「item.csv」「select.csv」の2種類のファイルを使用していましたが、これからは「normal-item」という形式に統一する必要があります。

「normal-item」形式では、商品の情報を以下の3つの行で構成します。

1、商品レベル行

2、商品オプションレベル行

3、SKUレベル行

特に注意が必要なのは、「商品オプションレベル行」の部分で、これまでの「select.csv」ファイルの内容を1商品につき1行の形式に変換する作業が必要です。

この変換作業を支援するために、簡単なツールを作成しました。
このツールは、必要な方が下記のURLからダウンロードできます。

使用方法は非常に簡単で、「入力」シートに「select.csv」の内容を貼り付け、実行ボタンを押すだけです。

そうすると、「出力」シートに変換されたデータが生成されます。
このツールは試験的に作成したもので、シンプルな機能しか備えていません。

※マクロのブロックは、解除してからご使用ください 

「select.csv」変換ツール


使用VBAコード

Sub Copyandplace()
    Dim 入力シート As Worksheet, 出力シート As Worksheet
    Dim 入力最終行 As Long, 出力最終行 As Long, r As Long, c As Long
    Dim 出力先列 As Long
    Dim 検索値 As String

    ' シートの設定
    Set 入力シート = ThisWorkbook.Sheets("入力")
    Set 出力シート = ThisWorkbook.Sheets("出力")

    ' 最終行の取得
    入力最終行 = 入力シート.Cells(入力シート.Rows.Count, "B").End(xlUp).Row
    出力最終行 = 出力シート.Cells(出力シート.Rows.Count, "B").End(xlUp).Row

    ' 入力シートのデータを走査
    For r = 2 To 入力最終行
        検索値 = 入力シート.Cells(r, 2).Value
        出力先列 = 5 ' E列から開始

        ' 出力シートで同じB列の値を検索
        For c = 2 To 出力最終行
            If 出力シート.Cells(c, 2).Value = 検索値 Then
                ' 空いている列を探す
                While Not IsEmpty(出力シート.Cells(c, 出力先列))
                    出力先列 = 出力先列 + 1
                Wend
                ' 値をコピー
                出力シート.Cells(c, 出力先列).Value = 入力シート.Cells(r, 5).Value
                Exit For
            End If
        Next c

        ' 新しい値の場合、新しい行に追加
        If c > 出力最終行 Then
            出力最終行 = 出力最終行 + 1
            出力シート.Cells(出力最終行, 2).Value = 検索値
            出力シート.Cells(出力最終行, 5).Value = 入力シート.Cells(r, 5).Value
        End If
    Next r
End Sub


いいなと思ったら応援しよう!