返回列表 上一主題 發帖

[發問] 如何 取不同工作表的欄位值,帶入另一工作表做運算

回復 5# lpk187


    Sub 擷取()
    Dim Rng As Range, aRng As Range, bRng As Range
    With Sheets("統計")
        .Range("B2:C" & .Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
        For Each Rng In .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
            Set aRng = Sheets("甲").Columns(1).Find(Rng.Value, LookIn:=xlFormulas, LookAt:=xlWhole, SearchDirection:=2)
            Set bRng = Sheets("乙").Columns(1).Find(Rng.Value, LookIn:=xlFormulas, LookAt:=xlWhole, SearchDirection:=2)
            If Not aRng Is Nothing Then Rng.Offset(, 1) = aRng.Offset(, 11)
            If Not aRng Is Nothing Then Rng.Offset(, 2) = bRng.Offset(, 11)
        Next
    End With
End Sub
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

請問lpk187 大大 這兩個取出的值 (相加) 然後在加上一個負值  並把它固定放在 ...固定G欄的儲存格(從G3開始將值放入..)

說明一下  "這兩個取出的值 (相加) 然後在加上一個負值 "
比如 取出 192  336,,,-(192+336)=-528
再次感謝你的幫忙  謝謝
學習 學習 一直學習

TOP

本帖最後由 lpk187 於 2016-3-16 09:10 編輯

回復 11# peter95

下圖是讓你瞭解Range物件的Offset屬性:運算式.Offset(列的偏移量, 欄的偏移量)

會讓你更容易瞭解程式怎麼運作的

  1. Option Explicit

  2. Sub 擷取()
  3.     Dim Rng As Range, aRng As Range, bRng As Range
  4.     With Sheets("統計")
  5.         .Range("B2:C" & .Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
  6.         For Each Rng In .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
  7.             Set aRng = Sheets("甲").Columns(1).Find(Rng.Value, LookIn:=xlFormulas, LookAt:=xlWhole, SearchDirection:=2)
  8.             Set bRng = Sheets("乙").Columns(1).Find(Rng.Value, LookIn:=xlFormulas, LookAt:=xlWhole, SearchDirection:=2)
  9.             If Not aRng Is Nothing Then Rng.Offset(, 1) = aRng.Offset(, 11)
  10.             If Not bRng Is Nothing Then Rng.Offset(, 2) = bRng.Offset(, 11)
  11.             Rng.Offset(, 6) = -(Rng.Offset(, 1) + Rng.Offset(, 1))
  12.         Next
  13.     End With
  14. End Sub
複製代碼

TOP

回復 11# peter95


    還有我第一次PO次的代碼中
If Not aRng Is Nothing Then Rng.Offset(, 1) = aRng.Offset(, 11)
If Not aRng Is Nothing Then Rng.Offset(, 2) = bRng.Offset(, 11)<<=這句是錯的
應該修正為
If Not bRng Is Nothing Then Rng.Offset(, 2) = bRng.Offset(, 11)

TOP

        靜思自在 : 多做多得。少做多失。
返回列表 上一主題