Board logo

標題: [發問] 表單儲存格自動下拉更新 [打印本頁]

作者: li_hsien    時間: 2013-12-3 18:19     標題: 表單儲存格自動下拉更新

請問各位大大

小弟我有個EXCEL_A寫了個函數(不是用巨集)
來參照EXCEL_B
(例如: EXCEL_A的欄位A=EXCEL的欄位C、還有用vlookup)

公式都OK可以運行

但是假設我EXCEL_B有增加資料數

我必須將EXCEL_A最下方的儲存格下拉才能更新到
請問能不能在我一開啟EXCEL的時候就直接增加新增的資料
不用手動去拉

我有試過連點儲存格右下角的十字
但是他也只能更新現在的筆數

如果EXCEL_B有新增 還是得將EXCEL_A往下拉

不知有沒有辦法做到開起直接更新

謝謝 各位大大  :  )
作者: mark15jill    時間: 2013-12-3 23:05

回復 1# li_hsien


  請附簡單的範例 更能顯示.您的問題
作者: rc_chc    時間: 2013-12-3 23:31

係咪姐係當開左EXCEL_A時, 就會自動CHECK下EXCEL_B行數然後自動更新EXCEL_A行數(抄上一行FORMULA)
作者: li_hsien    時間: 2013-12-4 08:25

回復 3# rc_chc

是的!!! 就是如同大大所說的

EXCEL_A、EXCEL_B欄位數目不一致
EXCEL_B是對照的檔案
如果EXCEL_B增加一筆
我開啟EXCEL_A的時候想要自動生成一筆

公式寫的是比對EXCEL_B的值
確定可以運行

但是目前必須將EXCEL_A最下方的那筆往下拉套用到下一筆
才能產生EXCEL_B新增的那個

想說能不能有一開啟EXCEL_A就直接新增EXCEL_B多出來新資料的方法
作者: mark15jill    時間: 2013-12-4 09:19

回復 4# li_hsien
  1. 在讀取B.xlsx區域碼前 設定判斷最後一列的列位置
  2.     Set myrange = ThisWorkbook.Sheets(1).Range("K65536").End(xlUp) '表示在K欄的最後一列
複製代碼

作者: Hsieh    時間: 2013-12-4 11:03

回復 1# li_hsien

EXCEL_B的資料範圍用動態定義名稱
如果公式很單純,如VLOOKUP函數是可以接受整欄參照,那就用整欄參照
畢竟參照不同檔案,很多函數在這樣情況下,必須A、B兩檔同時開啟才能達成
建議用一個工作表使用資料查詢來儲存來源檔案的資料
公式就可以直接參照查詢了
作者: li_hsien    時間: 2013-12-4 15:46

回復 5# mark15jill

謝謝大大

不過這樣只能到最後一個欄位吧???

公式還是不能向下展

還是必須手動拉下去套用
作者: li_hsien    時間: 2013-12-4 17:00

[attach]16958[/attach]

附檔是我的一個簡單運行的版本
不過公式基本上是一樣的

有兩個excel檔
testA跟testB

testA要去參照testB的欄位值
假設testB新增了HHH、III、JJJ

我希望在打開testA的時候能夠直接新增這三筆
但現在做法是我必須將testA最後一欄(A8)往下拉才會出現新增的值
不知能不能直接開啟就顯示

另一做法是先把testA的公式下拉好幾筆
就是雖然目前testB目前只有10筆,但我先將testA的公式下拉至100筆
這樣testB若更新,我只要testA一開就能跑值

可是這種做法有點治標不治本XDD
不知能不能克服

麻煩各位大大 謝謝  :  )
作者: li_hsien    時間: 2013-12-4 17:01

回復 6# Hsieh

謝謝板大的 : )

因為參照檔案有點多
不太方便全部打開來進行
所以會希望有自動更新的部分

不知能不能解決
謝謝 :  )
作者: Hsieh    時間: 2013-12-5 08:15

回復 9# li_hsien

    所以建議使用資料查詢作連結啊
[attach]16968[/attach]
作者: li_hsien    時間: 2013-12-5 16:23

回復 10# Hsieh


謝謝板大!!!

我不知道有這種功能耶

超級方便!!!!

又長了知識了  :  )   謝謝
作者: rc_chc    時間: 2013-12-5 16:58

小第剛剛學, 唔知咁樣得唔得(兩個FILE都要放係C:\TEMP)
作者: li_hsien    時間: 2013-12-5 21:16

回復 12# rc_chc

謝謝rc_chc大

這個方法也不錯

簡單明瞭

我又學到了一些

謝謝 : )
作者: li_hsien    時間: 2013-12-5 21:19

最近在試EXCEL裡的公式

本身我使用的是2007但是因為使用者的版本
我都會存成2003


可是在做不同EXCEL檔案的公式比對時候
都會出現
[attach]16970[/attach]
相容性的警告提醒

不知這意思是不是我如果用2003開
經過公式比對的值有字元限制
如果資料多一點就會出錯???

本身是2007我也不知怎麼做這方面的測試

想問問大大這主要會影響什麼???
作者: rc_chc    時間: 2013-12-5 22:09

因為是由EXCEL 2007 存舊版本格式, 所以"如果"檔案內有資料是超過 255個字元時才會有問題

那個只是提提你相容性警告語, 並不是指此檔案一定有問題
作者: mhl9mhl9    時間: 2013-12-7 03:21

[attach]16989[/attach]回復 8# li_hsien
在testB>>sheet1>>>[b1]寫公式" =counta(A:A)  "
在testA>>sheet1>>>[b1]寫公式" =]='C:\Users\Administrator\Desktop\test\[testB.xls]Sheet1'!$B$1  "       
在thisworkbook的module寫ruxia
在module1寫ruxia               
Private Sub Workbook_Open()                       
Sheets("sheet1").Activate                       
Macro1                       
End Sub                       
                       
Sub Macro1()                       
   n = [b1]                        
    Range("A2:A" & n).FillDown                       
End Sub                       
open testB,添加A欄內容,close testB
open testA會自動生成你要的效果了
作者: mhl9mhl9    時間: 2013-12-7 03:25

[attach]16990[/attach]回復 9# li_hsien


在testB>>sheet1>>>[b1]寫公式" =counta(A:A)  "
在testA>>sheet1>>>[b1]寫公式" =]='C:\Users\Administrator\Desktop\test\[testB.xls]Sheet1'!$B$1  "        
在thisworkbook的module寫ruxia
在module1寫ruxia               
Private Sub Workbook_Open()                        
Sheets("sheet1").Activate                        
Macro1                        
End Sub                        
                        
Sub Macro1()                        
   n = [b1]                        
    Range("A2:A" & n).FillDown                        
End Sub                        
open testB,添加A欄內容,close testB
open testA會自動生成你要的效果了
作者: mhl9mhl9    時間: 2013-12-7 03:29

[attach]16991[/attach]回復 1# li_hsien

在testB>>sheet1>>>[b1]寫公式" =counta(A:A)  "
在testA>>sheet1>>>[b1]寫公式" =]='C:\Users\Administrator\Desktop\test\[testB.xls]Sheet1'!$B$1  "        
在thisworkbook的module寫如下
在module1寫如下         
Private Sub Workbook_Open()                        
Sheets("sheet1").Activate                        
Macro1                        
End Sub                        
                        
Sub Macro1()                        
   n = [b1]                        
    Range("A2:A" & n).FillDown                        
End Sub                        
open testB,添加A欄內容,close testB
open testA會自動生成你要的效果了
作者: mhl9mhl9    時間: 2013-12-7 03:34

不好意思,論壇轉到page2,我以為沒有輸入,所以重複發了2次,Sorry
作者: rc_chc    時間: 2013-12-7 15:09

其實可以更簡化不用於testB 檔內更改
只要於testA檔內直加 =COUNTA('C:\Temp\[testB.xls]sheet1'!A$1:A$65536)
作者: li_hsien    時間: 2013-12-9 08:20

回復 19# mhl9mhl9

謝謝mhl9大

這方式不錯耶!!!

簡單

換個角度來想

不用一直執著在如何轉換


也謝謝rc_chc大的簡化


:  )
作者: li_hsien    時間: 2013-12-9 09:20

回復 19# mhl9mhl9

另外請問mhl9大

ruxia是什麼意思呀???

專有名詞嗎? 還是語法的一種??




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)