返回列表 上一主題 發帖

[發問] 若儲存格內容為0就整列不顯示

[發問] 若儲存格內容為0就整列不顯示

本帖最後由 oak0723-1 於 2010-9-6 21:17 編輯

如附件
在工作表1之[c10:m83]輸入資料
想得到如工作表2-1之結果
也就是說當工作表2-1的j欄內容經計算為0時就不將該列顯示於工作表2-1

為方便說明
附件中工作表2不論j欄內容是否為0將全部顯示出來之情形
而附件中工作表2-1是將j欄內容為0不顯示之情形

請仔細檢查附件中最後3欄結果與說明上的算法並不相符。

TOP

為何前幾欄取自表1第10列,而後面的取第13列?

TOP

j欄公式為='1'!M10+'1'!L10,說明為''此欄數值為工作表1(第m欄減第l欄)…如儲存格內式子但當此欄數值為零時就整列不顯示''
這又是怎麼回事?

TOP

本帖最後由 oak0723-1 於 2010-9-6 22:29 編輯

回復 6# oobird


    喔
抱歉可能小弟寫沒清楚
意思就是說
若工作表1裡的M10+L10=0
在工作表2就不顯示該列(第10列)
已修正如附件~~~

990906-1.rar (29.81 KB)

TOP

Sub yy()
Dim rng, arr, i%, j%, k%
With Sheets("1")
rng = .Range(.[c10], .[m83].End(3))
End With
ReDim arr(1 To UBound(rng), 1 To 10)
For i = 1 To UBound(rng)
If rng(i, 11) - rng(i, 10) <> 0 Then
k = k + 1
For j = 1 To 6
arr(k, j) = rng(i, j)
Next
arr(k, 8) = rng(i, 8) - rng(i, 6)
arr(k, 9) = arr(k, 8) - arr(k, 6)
arr(k, 10) = rng(i, 11) + rng(i, 10)
End If
Next
Sheets("2").UsedRange = ""
Sheets("2").[a5].Resize(k, 10) = arr
End Sub

TOP

If rng(i, 11) - rng(i, 10) <> 0 Then
這一行視你要加或減

TOP

回復 7# oobird


    請問
之前提到
動態陣列有個規則,就是只能改變第二維的大小
http://forum.twbts.com/viewthread.php?tid=1282
這裡卻arr(1 To UBound(rng), 1 To 10)
變數設在第一維
也就是列位為變數
這~~~到底是位什麼?

TOP

這個不是動態陣列,變數可設在任何一維。
因為你不習慣transpose,所以放棄動態陣列,這樣你可能較容易吸收!

TOP

回復 9# oobird


    完了~~~
我又看不懂了
我買的書上提到
固定陣列是以dim宣告
變動陣列是以Rerdim宣告
此處及http://forum.twbts.com/viewthread.php?tid=1282
這2個問題不是都用redim宣告嗎?

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題