在选择列时添加新行 # 取决于循环 #

Posted

技术标签:

【中文标题】在选择列时添加新行 # 取决于循环 #【英文标题】:Adding new Rows while choosing a Column # depending on the loop # 【发布时间】:2015-01-12 16:40:31 【问题描述】:

我在 SQL 中有如下行(第 1 行和第 2 行):

我想要的重要事情是将每一行再次添加到同一张表中 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 "

【问题讨论】:

您的问题不清楚。您是否尝试写line 1 12 次,每个DT_VALUE_Nbr 是不同的月份?所以第一行应该是15156,第二行应该是51563153 【参考方案1】:

鉴于"Sheet1"Excel 中的这些数据:

你可以运行这段代码:

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" 上获得此输出:

【讨论】:

由于某种原因,代码 1:1 对我不起作用(查看输出的第一列),它非常完美。我现在使用For CurRow = 2 To LastRow Year = 201401 For NewRow = 1 To 12 DestLast = DestSht.Range("D" & Rows.Count).End(xlUp).Row + 1 DataSht.Range("A" & CurRow & ":Q" & CurRow).Copy DestSht.Range("A" & DestLast).PasteSpecial DestSht.Range("D" & DestLast).Value = DestSht.Cells(DestLast, NewRow + 5).Value DestSht.Range("E" & DestLast).Value = Year Year = Year + 1 DestSht.Range("F" & DestLast & ":Q" & DestLast).Delete Next NewRow Next CurRow

以上是关于在选择列时添加新行 # 取决于循环 #的主要内容,如果未能解决你的问题,请参考以下文章

在 pyspark 数据框中循环遍历两列时将值添加到新列

如何禁用在handsontable中添加新行/列?

如何从数据库中选择数据并将其显示在gridview的新行上

DataGridview 列调整大小问题

当我选择最后一行时,为什么在MSFlexGrid中选择所有行?

在过滤其中一列时选择对