返回列表 上一主題 發帖

[發問] [資料區域的選擇]含公式但無數值的儲存格視為空白

[發問] [資料區域的選擇]含公式但無數值的儲存格視為空白

翻了舊文,找到一個適用的,但是不會套用

請問如何將Sheets("日報表").Range("B3")內的資料
複製到Sheets("綜合資料庫").Range("B65536")

套用下列函式
lastRow = 65536 - Application.CountBlank(Columns(1))
[A1].Resize(lastRow).Copy

回復 1# jackson7015
你說的有的些模糊,上傳檔案說清楚吧.

TOP

本帖最後由 jackson7015 於 2012-2-8 14:15 編輯

回復 2# GBKEE


    附上檔案
工作表.rar (29.15 KB)

1.
B5:B1000都有公式,要將日報表的B3複製到資料庫的B列無顯示日期的第一格空格

2.
日期可否只複製儲存格顯示的"當天日期",而非B3的TODAY()

TOP

回復 3# jackson7015
試試看
  1. Sub Ex()
  2.     Dim Ar(), Rng As Range, Xi As Integer
  3.     With Sheets("日報表")
  4.         Set Rng = .Range("d7", .[d7].End(xlDown))  '資料範圍: B欄有料的列
  5.         ReDim Ar(1 To Rng.Count, 1 To 10)          '陣列的大小 1 To 10 => 資料範圍 B欄:K欄
  6.         For Xi = 1 To Rng.Count
  7.             Ar(Xi, 1) = Date                       '日期
  8.             Ar(Xi, 2) = .Cells(Rng(Xi).Row, "B")   '編號
  9.             Ar(Xi, 3) = .Cells(Rng(Xi).Row, "N")   '備註
  10.             Ar(Xi, 4) = .Cells(Rng(Xi).Row, "D")   '地點
  11.            S = "=IF(RC[4]=1,""查無"",IF(RC[3]=1,""成案"" & SUM(RC[6]:RC[9])&""KW"",""""))"
  12.             Ar(Xi, 5) = S                          '成案
  13.             Ar(Xi, 6) = .Cells(Rng(Xi).Row, "G")
  14.             Ar(Xi, 7) = .Cells(Rng(Xi).Row, "H")
  15.             Ar(Xi, 8) = .Cells(Rng(Xi).Row, "I")
  16.             Ar(Xi, 9) = .Cells(Rng(Xi).Row, "J")
  17.           '  Ar(Xi, 10) = .Cells(Rng(Xi).Row, "n")  '  ** 請問這裡 要寫些什麼?   **
  18.         Next
  19.     End With
  20.     With Sheets("綜合資料庫")
  21.         .Range("B5:O" & Rows.Count) = ""        '清除 資料
  22.         .[B5].Resize(Rng.Count, 10) = Application.Transpose(Application.Transpose(Ar))
  23.                                                '轉置陣列  填入:資料
  24.     End With
  25. End Sub
複製代碼

TOP

本帖最後由 jackson7015 於 2012-2-8 19:17 編輯

回復 4# GBKEE

五體投地的感謝GBKEE版主..

這工作表想了好幾天快想破頭了..

要求的問題只有1.2個,卻把整篇都幾乎解決了..

小弟還有些問題,資料庫是日報表的累計

所以可以不清除資料庫,而是累計的方式繼續填入資料庫嗎

附上檔案 工作表.rar (22.07 KB)
  1. Sub Ex()
  2.     Dim Ar(), Rng As Range, Xi As Integer
  3.     With Sheets("日報表")
  4.         Set Rng = .Range("d7", .[d7].End(xlDown))  '資料範圍: B欄有料的列
  5.         ReDim Ar(1 To Rng.Count, 1 To 14)          '陣列的大小 1 To 14 => 資料範圍 B欄:O欄
  6.         For Xi = 1 To Rng.Count
  7.             Ar(Xi, 1) = Date                       '日期
  8.             Ar(Xi, 2) = .Cells(Rng(Xi).Row, "B")   '編號
  9.             Ar(Xi, 3) = .Cells(Rng(Xi).Row, "N")   '備註
  10.             Ar(Xi, 4) = .Cells(Rng(Xi).Row, "D")   '地點
  11.            S = "=IF(RC[4]=1,""查無"",IF(RC[3]=1,""成案"" & SUM(RC[6]:RC[9])&""KW"",""""))"
  12.             Ar(Xi, 5) = S                          '成案
  13.             Ar(Xi, 6) = .Cells(Rng(Xi).Row, "E")  '主要
  14.             Ar(Xi, 7) = .Cells(Rng(Xi).Row, "F")  '非主要
  15.             Ar(Xi, 8) = .Cells(Rng(Xi).Row, "G")  '是
  16.             Ar(Xi, 9) = .Cells(Rng(Xi).Row, "H") '否            
  17.             KK = "=IF(COUNTA(RC[-1]),""是"",IF(COUNTA(RC[-2]),""否"",""""))"            
  18.             Ar(Xi, 10) = KK
  19.             Ar(Xi, 11) = .Cells(Rng(Xi).Row, "I")  '燈
  20.             Ar(Xi, 12) = .Cells(Rng(Xi).Row, "J") '力
  21.              Ar(Xi, 13) = .Cells(Rng(Xi).Row, "K") '燈
  22.             Ar(Xi, 14) = .Cells(Rng(Xi).Row, "L") '力
  23.            '  Ar(Xi, 10) = .Cells(Rng(Xi).Row, "n")  '  ** 請問這裡 要寫些什麼?   **
  24.           '  Ar(Xi, 10) = .Cells(Rng(Xi).Row, "n")  '的部分是"是否成案的公式"=IF(COUNTA($I3),"是",IF(COUNTA($J3),"否",""))
  25.          Next
  26.      End With
  27.      With Sheets("綜合資料庫")
  28.          .Range("B5:O" & Rows.Count) = ""        '清除 資料
  29.          .[B5].Resize(Rng.Count, 10) = Application.Transpose(Application.Transpose(Ar))
  30.                                                 '轉置陣列  填入:資料
  31.      End With
  32. End Sub
複製代碼
還有上面
  1. Set Rng = .Range("d7", .[d7].End(xlDown))
複製代碼
這個程式碼中的.[d7]是代表什麼意思?

TOP

本帖最後由 GBKEE 於 2012-2-8 20:46 編輯

回復 5# jackson7015
  1.     With Sheets("綜合資料庫").Cells(Rows.Count, "B").End(xlUp).Offset(1)
  2.          .Resize(Rng.Count, UBound(AR, 2)) = Application.Transpose(Application.Transpose(AR))
  3.     End With
複製代碼

[   ]   看這裡 ...

TOP

回復 6# GBKEE


   
大略了解意思了,剩下的那個逗點再好好研究

感謝版主的解惑,獲益良多

也謝謝版主直接幫小弟的表格細調完整:loveliness:

TOP

回復 6# GBKEE


   
想在跟GBKEE大請益

可以將
  1. Ar(Xi, 1) = Date                       '日期
複製代碼
套用日報表的"B3",的日期嗎

因為有時會因為當天無法作業,所以隔天做他日的日報,所以不會為當日日期

TOP

回復 8# jackson7015
可以ㄚ  不過 日報表 B3=TODAY()   還是當天的日期

TOP

本帖最後由 jackson7015 於 2012-2-9 22:06 編輯

回復 9# GBKEE


    如果所需要的日期不是當日,[B3]我會設定TODAY()-N來當作日報表的日期格式

這樣感覺比較不會破壞日期格式

如果要將 Ar(Xi, 1) = Date  更改成以日報表的[B3]所顯示的日期為數據的話

請問 Date 該改成什麼 ?

因為不像其他列式一樣是整列去做COPY所以好像不能使用  .Cells(Rng(Xi).Row, "B3"

小弟只會舉一反一,希望能多多指教

PS.有點回歸到原問題的討論,只複製B3顯示的日期,而非公式的TODAY()

TOP

        靜思自在 : 難行能行,難捨能捨,難為能為,才能昇華自我的人格。
返回列表 上一主題