Board logo

標題: 工作表同步增加資料 [打印本頁]

作者: leiru    時間: 2015-2-11 22:39     標題: 工作表同步增加資料

問題:
sheet2工作表的a欄及b欄是抓取sheet1的a欄及b欄,sheet1的a,b欄資料會不斷增加,則sheet2的a,b欄也要同步增加
請問要如何設定公式?
作者: ANGELA    時間: 2015-2-12 10:18

A2=IF(Sheet1!A2="","",Sheet1!A2)
作者: rouber590324    時間: 2015-2-12 10:38

DEAR SIR
  用VBA如下放於 SHEET1 內

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheet2.[A1:b65536].ClearContents
X = Sheet1.[A65536].End(xlUp).Row
Y = Sheet1.[B65536].End(xlUp).Row
For M = 1 To X
Sheet2.Cells(M, 1) = Sheet1.Cells(M, 1)
Next
For N = 1 To Y
Sheet2.Cells(N, 2) = Sheet1.Cells(N, 2)
Next
End Sub
作者: owen06    時間: 2015-2-12 11:15

回復 1# leiru


    試試看
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. With Target
  3.   If .Row >= 2 And .Column = 1 Or .Column = 2 Then
  4.     tar = .Address(0, 0)
  5.     Sheets("sheet2").Range(tar) = .Value
  6.   End If
  7. End With
  8. End Sub
複製代碼

作者: leiru    時間: 2015-2-12 12:06

謝謝ANGELA 及rouber590324 及owen06 回覆...
不會vba,請問是否可以設定函數....

angela大師,此公式在sheet2是要下拉,想設定的公式可以自動產生,不用作下拉式才產生新的資料
作者: owen06    時間: 2015-2-12 14:54

本帖最後由 owen06 於 2015-2-12 14:59 編輯

回復 5# leiru


    vba又不難,何必要排斥呢?畢竟只靠公式,很難達成這種自動的動作。
    先點上面的『複製代碼』,然後在你的檔案裡按alt+F11,跳出vba編輯視窗,然後點『工作表1』2下,貼上代碼,就完成了呀。
作者: leiru    時間: 2015-2-12 16:12

回復 6# owen06


   謝謝您的回覆,我再試試看
作者: leiru    時間: 2015-2-12 23:22

回復 4# owen06


    請問,若SHEET1再增加欄位,此VBA要如何修改
謝謝
作者: fantersy    時間: 2015-2-13 15:15

If .Row >= 2 And .Column = 1 Or .Column = 2 Then
Column是欄 1或2
若要增加應該是改這邊的數值
作者: leiru    時間: 2015-2-13 15:44

回復 9# fantersy


   再試試看....
  請問,若工作表名稱也改名,要如何修改模組內容
作者: owen06    時間: 2015-2-14 12:10

回復 10# leiru
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. With Target
  3.   If .Row >= 2 And .Column = 1 Or .Column = 2 Then
  4.     tar = .Address(0, 0)
  5.     Sheets("sheet2").Range(tar) = .Value
  6.   End If
  7. End With
  8. End Sub
複製代碼
若要增加欄,就再多加:  or .column=X 即可
若要改工作表名   Sheets("XXX").Range(tar) = .Value
以上都修改X的部份即可
作者: leiru    時間: 2015-2-14 19:22

回復 11# owen06


    謝謝owen06耐心指導,照步驟操作,仍做不出來,再麻煩指導....
感謝
作者: owen06    時間: 2015-2-16 21:04

回復 12# leiru


    請問調整跟上傳這二個表,是要做怎麼樣的連動呢?可否簡述一下,謝謝~
作者: leiru    時間: 2015-2-16 22:51

回復 13# owen06

上傳工作表要抓取調整工作表的對應欄位,例如:上傳的a欄抓調整的a欄,以此類推....
上傳工作表的資料是要自動產生,也就是第11篇的vba,只是改工作表名稱及增加欄位,套此公式,寫不出來,想請問大師哪裡出錯..

謝謝您
作者: owen06    時間: 2015-2-17 00:20

回復 14# leiru


    我測試的結果是ok的呀,在『調整』工作表第1115列新增內容,
    在『上傳』工作表的第1115列,也就會秀出相對應的東西,
    還是你excel的巨集安全性裡,並未開啟『啟用所有巨集』呢?

    另外如果你要1到10欄都同步的話,直接改這樣會比較簡潔
    If .Row >= 2 And .Column <= 10 Then
作者: leiru    時間: 2015-2-17 12:03

回復 15# owen06


    選取 [開發人員] 核取方塊及勾選"啟用所有巨集 (不建議使用;會執行有潛在危險的程式碼)"
仍然不能帶出來資料,可以麻煩看是哪裡有問題.
作者: owen06    時間: 2015-2-17 15:24

回復 16# leiru


    小如,我看你在調整那個表,第1115列有新增一筆資料,
    而上傳的那個表,第1115列,就有同步你新增的那筆資料呀,沒問題呀~
作者: leiru    時間: 2015-2-17 17:01

回復 17# owen06


    我這裡電腦開啟這檔案,上傳檔案就一直無法帶出來資料,真不知哪裡出問題
作者: owen06    時間: 2015-2-18 11:19

回復 18# leiru


    你第一個上傳的附檔『統計』裡的第1115列是沒有資料的,
    但第二個上傳附檔『統計2』裡的第1115列你有key一筆資料,
    而上傳那個表的第1115列也出現了在調整的表裡輸入的東西,
    代表你所需要的功能有正確執行無誤呀,因為第二個附檔,
    是你在輸入完後儲存上傳的,即然他第1115列有產生東西出來,
    即表示功能已經正確執行無誤了不是嗎?
作者: oshi    時間: 2015-2-22 13:56

回復 11# owen06
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. With Target
  3.   If .Row >= 2 And .Column = 1 Or .Column = 2 Then
  4.     tar = .Address(0, 0)
  5.     Sheets("sheet2").Range(tar) = .Value
  6.   End If
  7. End With
  8. End Sub
複製代碼
請問一下如果我想要讓他可以Shift到指定欄位才貼上要怎麼修改呢?
目前都是sheet1(A2)->sheet2(A2)

如果我想要貼到sheet2(C2) 要怎麼修改?
我改變address 裡面的值好像也沒什麼用QQ
作者: owen06    時間: 2015-2-23 14:46

回復 20# oshi


    你可以使用offset
     Sheets("sheet2").Range(tar).offset(0,2) = .Value
作者: oshi    時間: 2015-2-24 00:22

回復 21# owen06


    owen大~

我又遇到一個問題是~
我有兩個工作表(A,B)都想要同步增加資料到工作表C

當只有一個工作表的時候,都可以正常同步增加資料
可是如果我把同一組代碼貼在A,B工作表內之後,同步資料就會跳出" Run time error '1004' "
如附圖

請問要怎麼解決這個問題呢?
作者: owen06    時間: 2015-2-24 09:20

回復 22# oshi


    能否附個檔案上來,以便了解問題所在。
作者: oshi    時間: 2015-2-24 11:18

好像不能整個欄位複製貼上,我如果只複製有資料的欄位就不會報error
如果我是直接點選excel上面的欄位直接點複製就會報錯
作者: owen06    時間: 2015-2-24 11:27

本帖最後由 owen06 於 2015-2-24 11:32 編輯

回復 24# oshi


    我的office 2013不會吶…
    不然你在with target的上面加個『on error resume next』試試看
    可是這樣,好像整個貼上的資料也不會同步過去。
作者: oshi    時間: 2015-2-24 15:43

回復 25# owen06

後來改用 currentRegion的方式解決了
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. With Target
  3. Range("A:B").CurrentRegion.Copy
  4. Sheets("Comparing").Range("A2").PasteSpecial Paste:=xlPasteValues
  5. End With
  6. End Subs
複製代碼

作者: oshi    時間: 2015-2-24 15:53

不過如果遇到更新的資料量比目前少好像沒辦法清除舊的資料

就會把舊的欄位留在那邊QQ

有什麼好方法可以解決嗎?
作者: owen06    時間: 2015-2-25 08:21

回復 27# oshi


    在新資料copy過去之前,先把舊資料那張表的a:b全部先清掉,
    再貼上新資料,就行了不是嗎?
作者: sandrahuang    時間: 2015-2-26 14:30

很有意義的範例
作者: HUNGCHILIN    時間: 2015-2-27 02:11

本帖最後由 HUNGCHILIN 於 2015-2-27 02:13 編輯

阿吉很久沒電腦了
如果不用想用函數

1.手動的話.用進階篩選
2.巨集就錄製一個進階篩選.即可解決
程式簡短很多.也淺顯易懂.要手動與用VBA均可操作

當然您也可以把 巨集 放在 Private Sub Worksheet_Change(ByVal Target As Range) 內

[attach]20302[/attach]
作者: frjtbippp    時間: 2015-3-6 21:31

大家這麼那麼強喔~~~~~~~
作者: HUNGCHILIN    時間: 2015-6-17 23:13

回復 32# Leo1318
  1. Option Explicit
  2. Sub 巨集1()
  3. Sheets("Sheet1").Columns("A:B").AdvancedFilter Action:=xlFilterCopy, _
  4.         CopyToRange:=Range("A1"), Unique:=False
  5. End Sub
複製代碼
[attach]21197[/attach]
作者: Leo1318    時間: 2015-6-19 10:47

回復 33# HUNGCHILIN

謝謝版主, 但還不太了解, VBA裡的語汰, 完全沒有SHEET 2的字眼. 那程式是如何可以把SHEET 1的文字加到SHEET 2裡????




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