【问题标题】:Subtract via VBA: Rows values in Column C = Row values in Column A - Row values in Column B通过 VBA 减去:C 列中的行值 = A 列中的行值 - B 列中的行值
【发布时间】:2021-07-29 22:36:13
【问题描述】:

我编写了一个代码,允许我在将数据粘贴到我的工作表后,将包含新数据的列动态添加到同一工作表的“每周”工作表中。这意味着每次我每周添加数据时,我的 VBA 代码都会在“每周”工作表中添加一个新列,我们将其称为 ColumnC。

我在这里缺少的是 ColumnC 和 ColumnA 中包含的值减去 ColumnB 考虑到这些是动态的,也就是说,在我们需要 ColumnE - ColumnC 到 ColumnD 之后的一周:

有没有人可以指出正确的方向?

Sub SubtractDynamicColumns()
Dim sht As Worksheet
Dim LastColumn As Long, PreviousData As Long, PreviousColumn As Long
Set sht = ThisWorkbook.Worksheets("Weekly")

LastColumn = sht.Cells(2, sht.Columns.Count).End(xlToLeft).Column
PreviousData = sht.Cells(2, sht.Columns.Count).End(xlToLeft).Column - 2
PreviousColumn = sht.Cells(2, sht.Columns.Count).End(xlToLeft).Column - 1
End Sub

谢谢

【问题讨论】:

  • 因此,如果我理解正确,当添加更多数据时,您不是附加到表中,而是将新数据放到原始数据的一侧?所以它总是一组 3 列;但是它不是连续的 3 组?

标签: excel vba


【解决方案1】:

我得到了这个工作,但它把值作为值而不是公式。

Sub SubtractDynamicColumns()
Dim sht As Worksheet
Dim LastColumn As Long, PreviousData As Long, PreviousColumn As Long
Dim LastRow As Long, row_no As Long
Set sht = ThisWorkbook.Worksheets("Weekly")

 
LastColumn = sht.Cells(2, sht.Columns.Count).End(xlToLeft).Column
LastRow = ActiveSheet.Cells(Cells.Rows.Count, LastColumn).End(xlUp).Row
PreviousData = sht.Cells(2, sht.Columns.Count).End(xlToLeft).Column - 2
PreviousColumn = sht.Cells(2, sht.Columns.Count).End(xlToLeft).Column - 1

For row_no = 2 To LastRow
    sht.Cells(row_no, PreviousColumn).Value = (Cells(row_no, LastColumn).Value - Cells(row_no, PreviousData).Value)
Next


End Sub

【讨论】:

  • 马克,非常感谢,它就像一个魅力
【解决方案2】:
Sub SubtractDynamicColumns()
    Dim rng As Range

    Set rng = ThisWorkbook.Worksheets("Weekly").Range("A1").CurrentRegion ' A1 - any cell in the range
    Intersect(rng.Columns(rng.Columns.Count - 1), rng.Offset(1)).FormulaR1C1 = "=RC[1]-RC[-1]" 'get the penultimate column except for the header row and set the formula
End Sub

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2020-03-25
    相关资源
    最近更新 更多