I want to accomplish this in either Excel or Access。我需要找到最有效的方法来做到这一点,否则我的用户将不会一直这样做。最终,我希望它在最终形式中以便在Access中进行查询,但我将Excel列为一个选项,因为我总是可以从电子表格导入Access。
简而言之,我希望转换 除 之前的每一列前两列。然后,我想为每个转置行分配原始对应的item
和description
。
我使用的方法是使用Excel中的转置粘贴复制并特殊粘贴第3行,第4行和第5行,然后手动将每个项目和描述复制到相应的行,但这对于近400行不可行和我的用户将使用的50列。
我有使用Access / VB for Access,Excel(但这里没有VB经验)和SQL的经验。我想找到最快的方法来做到这一点。我不介意在查询或构建一些VB代码时构建查询,我真的希望这可以工作。
答案 0 :(得分:1)
在运行下面的代码之前,请删除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