将该表中除2列外的所有列进行换位的最有效方法是什么(如图所示)



我想在Excel或Access中完成这项工作。我需要找到最有效的方法来做到这一点,否则我的用户不会一直这样做。最终,我希望它处于最终形式,以便在Access中进行查询,但我将Excel列为一个选项,因为我总是可以从电子表格导入Access。

简而言之,我想转置每一列,除了前两列。然后,我想为每个转置的行分配原始的对应的itemdescription

我使用的方法是使用Excel中的转置粘贴来复制和特殊粘贴第3行、第4行和第5行,然后手动将每个项目和描述复制到相应的行,但这对于我的用户将要使用的近400行和50列来说是不可行的。

我有Access、Excel(但这里没有VB经验)和SQL的经验。我想找到最快的方法来做这件事。我不介意构建一个又一个查询,也不介意使用一些VB代码,我只是真的希望它能工作。

在运行下面的代码之前,请删除H到K列中的所有数据。否则,代码将不起作用。

Sub CreateTable()
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
startRow = 2
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
startCol = 3
counter = 2
For rowCnt = startRow To lastRow
itemStr = Cells(rowCnt, 1).Value
descStr = Cells(rowCnt, 2).Value
For colCnt = startCol To lastCol
dateStr = Cells(1, colCnt).Value
qnty = Cells(rowCnt, colCnt).Value
Cells(counter, 8).Value = itemStr
Cells(counter, 9).Value = descStr
Cells(counter, 10).Value = qnty
Cells(counter, 11).Value = dateStr
counter = counter + 1
Next
Next
Cells(1, 8).Value = "item"
Cells(1, 9).Value = "description"
Cells(1, 10).Value = "expected_qty"
Cells(1, 11).Value = "expected_job_date"
End Sub

最新更新