0

言葉遣いの悪い質問で申し訳ありません。

私はExcelで以下の表を持っています:

ここに画像の説明を入力

実際のファイルは幅 800 列、深さ 2800 行なので、200 万以上の組み合わせがあります。データベースで管理するのは本当に難しいです。

次のようなデータベースに適した形式にデータを変換する必要があります。

ここに画像の説明を入力

正直なところ、どこから始めればよいかわかりません。これを行うためのExcelまたは既存のスクリプトにリバースピボットはありますか?

そのため、Excel で行と列が出会うロジックで、値をフェッチし、3 つすべてをデータベース形式に書き込みます。

ポインタはありますか?

いつもありがとう

4

2 に答える 2

1

このコードを使用して、選択したデータベースにインポートできる csv ファイルを作成できます。あなたが説明したものと同様のサイズのデータ​​セットでテストしたところ、約 30 秒で完了しました。

Sub tgr()

    Dim arrData As Variant
    Dim rIndex As Long
    Dim cIndex As Long
    Dim i As Long
    Dim strLine As String
    Dim strTemp As String

    arrData = Range("A1", Cells(Cells(Rows.Count, "A").End(xlUp).Row, Cells(1, Columns.Count).End(xlToLeft).Column)).Value

    Close #1
    Open "C:\Temp\ExcelData.csv" For Output As #1
    Print #1, "Product,Customer,Price"
    For rIndex = 2 To UBound(arrData, 1)
        For cIndex = 2 To UBound(arrData, 2)
            strLine = vbNullString
            For i = 1 To 3
                strTemp = Choose(i, arrData(rIndex, 1), arrData(1, cIndex), arrData(rIndex, cIndex))
                If InStr(1, strTemp, ",", vbTextCompare) > 0 Then strTemp = """" & strTemp & """"
                strLine = strLine & "," & strTemp
            Next i
            Print #1, Mid(strLine, 2)
        Next cIndex
    Next rIndex
    Close #1

    Erase arrData

End Sub
于 2013-08-12T15:08:46.760 に答える