0

为措辞不当的问题道歉。

我在excel中有下表:

在此处输入图像描述

真正的文件是 800 列宽和 2800 行深,因此超过 200 万个组合。更何况它真的很难在数据库中管理。

我需要将数据转换为数据库友好格式,例如:

在此处输入图像描述

老实说,我不知道从哪里开始。excel 或现有脚本中是否有反向枢轴来执行此操作?

所以逻辑,在 excel 中行与列相遇的地方,获取值并将所有三个写入数据库格式。

任何指针?

一如既往的感谢

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 回答
-2

为此,您可以使用转置功能。

于 2013-10-13T17:01:08.957 回答