返回列表 上一主題 發帖

[發問] (已解決)浮動區域的作業

[發問] (已解決)浮動區域的作業

本帖最後由 freeffly 於 2012-2-22 17:05 編輯

我想要問一下如附加檔那樣我的sum那各部份要怎麼設?
因為每各月整理出來的區域都不一樣
所以沒辦法固定區間
原本想到下面的方式
可是不可行
n 雖然是對的
可能我還缺哪各部份
請大大幫我看一下
謝謝


Sub Macro1()
'
' Macro1 Macro
' User 在 2011/3/2 錄製的巨集
'
    Dim 範圍 As Range, n As Integer
    Set 範圍 = Range("A" & Range("A65536").End(xlUp).Row)
    i = 範圍.CurrentRegion.Rows.Count - 1
    n = i * -1
     Range("H" & Range("A65536").End(xlUp).Row + 1) = "=sum(R[-1]C:R[n]C)"   
End Sub

問題.rar (9.9 KB)

字典兩各字 還真難理解

  1. Sub revisedprogram()

  2. Dim myrange As Range, downlimit As Range, uplimit As Range, rightlimit As Range, myregion As Range

  3. Dim a, H, i
  4. Set myrange = Range("a65536").End(xlUp)

  5. Set downlimit = myrange
  6. Set uplimit = downlimit.End(xlUp)
  7. Set rightlimit = downlimit.End(xlToRight)
  8. Set myregion = Range(uplimit, rightlimit)

  9. H = 0
  10. i = 0

  11. For Each a In Range(uplimit, downlimit)
  12. 'if a.offset(,5) = "??材料倉" and a.offset(,6) = "?" ? => 自己填入所需的篩選項
  13. H = H + a.Offset(, 7).Value
  14. i = i + a.Offset(, 8).Value
  15. 'end if
  16. Next

  17. downlimit.Offset(1, 6) = "小計"
  18. downlimit.Offset(1, 7) = H
  19. downlimit.Offset(1, 8) = i
  20. downlimit.Offset(1, 9) = H / i
  21. downlimit.Offset(1, 7).Interior.ColorIndex = 6
  22. downlimit.Offset(1, 8).Interior.ColorIndex = 6
  23. downlimit.Offset(1, 9).Interior.ColorIndex = 6

  24. End Sub
複製代碼
應該這樣吧,如果沒有事先篩選,把綠色字串最初的那個 ' 拿掉,輸入所需就行
80 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 19# freeffly
把我的程式修改一下.變成
80 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 18# FAlonso


    檔案內我有說明
     請看檔案吧

浮動區域問題.rar (16.74 KB)

字典兩各字 還真難理解

TOP

回復 17# freeffly
我猜想或許工作表中有很多區塊,當中一些又要對O作計算,所以寫成了loop
只對最下層區域作小計,把7/33/34行的程式刪掉便行
80 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 16# FAlonso


    我只要加總最後依區塊
      你的方式好像是針對"O"進行加總
      我剛看別的區塊加總好像有問題
      你的方式好像有點類似另一位大大但是又有些差異
      明天在告訴你差在哪裡
字典兩各字 還真難理解

TOP

回復 1# freeffly
如果樓主有空的話,可否試試我這個作品,有錯的話請通知我讓我改正
  1. Sub abc()
  2. Dim myrange As Range, downlimit As Range, uplimit As Range, rightlimit As Range, myregion As Range
  3. Dim a, h, i

  4. Set myrange = Range("a65536").End(xlUp)

  5. Do
  6. Set downlimit = myrange
  7. Set uplimit = downlimit.End(xlUp)
  8. Set rightlimit = downlimit.End(xlToRight)
  9. Set myregion = Range(uplimit, rightlimit)

  10. h = 0
  11. i = 0

  12. For Each a In Range(uplimit, downlimit)
  13. If a.Offset(, 6) = "O" Then
  14.     h = h + a.Offset(, 7).Value
  15.     i = i + a.Offset(, 8).Value
  16. End If
  17. Next

  18. If h <> 0 Then
  19. downlimit.Offset(1, 6) = "小計"
  20. downlimit.Offset(1, 7) = h
  21. downlimit.Offset(1, 8) = i
  22. downlimit.Offset(1, 9) = h / i
  23. downlimit.Offset(1, 7).Interior.ColorIndex = 6
  24. downlimit.Offset(1, 8).Interior.ColorIndex = 6
  25. downlimit.Offset(1, 9).Interior.ColorIndex = 6
  26. End If

  27. Set myrange = uplimit.End(xlUp)
  28. Loop While myrange.Address <> "$A$1"
  29. End Sub
複製代碼
80 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 14# GBKEE


    謝謝
字典兩各字 還真難理解

TOP

回復 13# freeffly
對的

TOP

回復 12# GBKEE


   謝謝
    有點看懂了
   主要是R的區域的移動加總
    可以這樣說嗎
字典兩各字 還真難理解

TOP

        靜思自在 : 小事不做、大事難成。
返回列表 上一主題