根据循环选择Column#时添加新行#

时间:2015-01-12 16:40:32

标签: sql vba excel-vba access-vba excel

我在SQL中的行与下面的行(第1行和第2行)完全相同:

enter image description here

我想要的重要一点是将每一行再次添加12次到同一个表中。 第1列到第12列包含每个类别(每行)的每月预算信息。 我需要12行的格式,其中预算在DT_VALUE_Nbr字段中,因为读取它的软件需要一个预算编号/行。

现在将12行添加到同一个表中没有问题,我将来会改变这一点,我只是不知道如何在vba中编写循环来更改记录集并将修改后的记录集插入数据库。

我建议将其作为Access VBA模块执行此操作,因为模块已经进行了许多计算。

我对表的查询:

SQL = " SELECT AS_VAR_ORG_Version_SK, ORG_Sk, VAR_Sk, DT_VALUE_Nbr, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12] " & _
      " FROM dbo.AAAAAA_TEMP "

1 个答案:

答案 0 :(得分:1)

"Sheet1"上的 Excel 中提供此数据:

enter image description here

您可以运行此代码:

Sub testit()

Dim LastRow As Long, CurRow As Long, NewRow As Long, DestLast As Long
Dim DataSht As Worksheet, DestSht As Worksheet

Set DataSht = Sheets("Sheet1")
Set DestSht = Sheets("Sheet2")
LastRow = DataSht.Range("A" & Rows.Count).End(xlUp).Row

DestSht.Cells.Clear

DataSht.Rows(1).Copy
DestSht.Range("A1").PasteSpecial
DestSht.Range("F1").Value = "Month"
DestSht.Range("G1:Q1").Delete

For CurRow = 2 To LastRow
    For NewRow = 1 To 12
        DestLast = DestSht.Range("E" & Rows.Count).End(xlUp).Row + 1
        DataSht.Range("A" & CurRow & ":Q" & CurRow).Copy
        DestSht.Range("A" & DestLast).PasteSpecial
        DestSht.Range("E" & DestLast).Value = DestSht.Cells(DestLast, NewRow + 5).Value
        DestSht.Range("F" & DestLast).Value = NewRow
        DestSht.Range("G" & DestLast & ":Q" & DestLast).Delete
    Next NewRow
Next CurRow

End Sub

并在"Sheet2"上获得此输出:

enter image description here