为措辞不当的问题道歉。
我在excel中有下表:
真正的文件是 800 列宽和 2800 行深,因此超过 200 万个组合。更何况它真的很难在数据库中管理。
我需要将数据转换为数据库友好格式,例如:
老实说,我不知道从哪里开始。excel 或现有脚本中是否有反向枢轴来执行此操作?
所以逻辑,在 excel 中行与列相遇的地方,获取值并将所有三个写入数据库格式。
任何指针?
一如既往的感谢
您可以使用此代码创建一个 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
为此,您可以使用转置功能。