簡體   English   中英

通過 VBA 減去:C 列中的行值 = A 列中的行值 - B 列中的行值

[英]Subtract via VBA: Rows values in Column C = Row values in Column A - Row values in Column B

我編寫了一個代碼,允許我在將數據粘貼到我的工作表后,將包含新數據的列動態添加到同一工作表的“每周”工作表中。 這意味着每次我每周添加數據時,我的 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

謝謝

我讓這個工作,但它把值作為值,而不是作為一個公式。

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
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM