【问题标题】:Update Column Range with the cell value使用单元格值更新列范围
【发布时间】:2016-06-22 20:25:50
【问题描述】:

我有一个名为“testfall-input-vorschlag的输入表,其中我们必须从第7(j)列中的第一行的小区中的下拉列表中的值以及选择值”ARB13“时选择一个值。我想填写它被选中的列。该列的填充是随机值。有一个名为“Admin”的工作表,它的值存储在 A:ZZ 的列的单元格中。现在我在“Testfall -Input-Vorschlag”表我想按顺序填写列的单元格。这意味着例如对于单元格(11,7),我想从单元格(12,7)的“Admin”中的列 A 生成一个随机值对于单元格(13,7),该值必须来自“Admin”中的 B 列,该值来自“Admin”中的 C 列,依此类推。所以我一直在尝试,我想出了这段代码

Sub ARB13()


Dim col As Integer


For i = 11 To 382


For j = 7 To 1000


If Sheets("Testfall-Input_Vorschlag").Cells(1, j) = "ARB13" Then
col = 0
col = col + 1
 LB = 2
    UB = Sheets("Admin").Range("col" & Rows.Count).End(xlUp).Row
    Cells(i, j).Select
    ActiveCell.FormulaR1C1 = Sheets("Admin").Range("Y" & Int((UB - LB + 1) *       Rnd + LB))


 End If
 Next j
 Next i
 End Sub

如何更新每个 i 的 col 值。这意味着对于每个 i,我需要将 col 值增加 1。我哪里出错了?

【问题讨论】:

  • 一项 Range("col" & Rows.Count) 应该使用 Cells() 而不是 Cells(Rows.Count,col)

标签: excel vba


【解决方案1】:

在开始第一个循环之前定义col,并且不要将col = col + 1 放入For j = 7 to 1000 循环中。否则col 将针对每个j 而不是每个i 递增。像这样的:

Sub ARB13()
    Dim col as Long
    Dim i  as Long
    Dim j as Long

    col = 0

    For i = 11 To 382
        For j = 7 to 1000
            LB = 2
            UB = Sheets("Admin").Cells(Rows.count, col).End(xlUp).row
            Cells(i, j).Select
            ActiveCell.FormulaR1C1 = Sheets("Admin").Range("Y" & Int((UB - LB + 1) * Rnd + LB))
        Next j

        col = col +1
    Next i
End Sub

【讨论】:

  • .Range("col" & Rows.count). 不正确,除非 OP 想要列 COL。但我认为他想要变量col 的值。此外,公式可能需要一些工作。
猜你喜欢
  • 1970-01-01
  • 2018-07-27
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多