(已解決)如何用搜尋找資料後複製該位置以下的資料?
- 帖子
- 586
- 主題
- 123
- 精華
- 0
- 積分
- 763
- 點名
- 0
- 作業系統
- WINDOW7
- 軟體版本
- Office 2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-16
- 最後登錄
- 2017-3-14
 
|
(已解決)如何用搜尋找資料後複製該位置以下的資料?
本帖最後由 freeffly 於 2012-3-6 13:43 編輯
我想要用搜尋的方式
如附檔
如果搜尋到第一各工作表[C1]的資料
就複製各個工作表第4列之後的資料
因為每各工作表排的位置有點不相同
所以目前我想到的方式是用搜尋
但是用vba我不知道該怎麼去抓
ssdsa.rar (18.08 KB)
|
|
|
字典兩各字 還真難理解
|
|
|
|
|
- 帖子
- 586
- 主題
- 123
- 精華
- 0
- 積分
- 763
- 點名
- 0
- 作業系統
- WINDOW7
- 軟體版本
- Office 2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-16
- 最後登錄
- 2017-3-14
 
|
15#
發表於 2012-2-23 13:26
| 只看該作者
回復 13# Hsieh
謝謝版主
有想到用resize可是沒試出來
原來是差在.value |
|
|
字典兩各字 還真難理解
|
|
|
|
|
- 帖子
- 586
- 主題
- 123
- 精華
- 0
- 積分
- 763
- 點名
- 0
- 作業系統
- WINDOW7
- 軟體版本
- Office 2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-16
- 最後登錄
- 2017-3-14
 
|
14#
發表於 2012-2-23 13:18
| 只看該作者
回復 10# hugh0620
這個我有發現
你們倆各的處理方式不一樣
都是學習的方式 |
|
|
字典兩各字 還真難理解
|
|
|
|
|
- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 142
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2026-7-16
                
|
13#
發表於 2012-2-23 10:53
| 只看該作者
回復 8# freeffly - Private Sub Worksheet_Change(ByVal Target As Range)
- If Target.Address = "$C$1" Then
- Application.EnableEvents = False
- Range("A1").CurrentRegion.Offset(1, 2) = ""
- For Each a In Range("A2", [A2].End(xlDown))
- sh = Format(a, "emm")
- For Each sht In Sheets
- If sht.Name = sh Then
- With sht
- Set c = .Rows(1).Find([C1], lookat:=xlWhole)
- r = Application.Match(a, .[A:A], 0)
- If IsNumeric(r) And Not c Is Nothing Then a.Offset(, 2).Resize(, 2).Value = .Cells(r, c.Column).Resize(, 2).Value
- End With
- End If
- Next
- Next
- End If
- Application.EnableEvents = True
- End Sub
複製代碼 |
|
|
學海無涯_不恥下問
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
12#
發表於 2012-2-23 09:52
| 只看該作者
回復 10# hugh0620
- r = Application.Match(a, .[A:A], 0)
- If IsNumeric(r) And Not c Is Nothing Then a.Offset(, 2) = .Cells(r, c.Column) Else a.Offset(, 2) = ""
複製代碼
Match函數 :找到時傳回數字, 找不到時傳回 "#N/A" (錯誤值)
改成 If Not IsError(r) And Not c Is Nothing Then 就可以除錯 |
|
|
|
|
|
|
|
- 帖子
- 559
- 主題
- 58
- 精華
- 0
- 積分
- 626
- 點名
- 0
- 作業系統
- win8
- 軟體版本
- office2013
- 閱讀權限
- 50
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2010-11-22
- 最後登錄
- 2024-6-14
|
11#
發表於 2012-2-23 09:37
| 只看該作者
回復 Hsieh
仔細看過後板主的方式與另外一位大大方式不同(處理方式)
如果說想要向另一位大 ...
freeffly 發表於 2012-2-23 09:09 
樓主你用的SHEET.Name是民國+年~
所以H大大用sh = Format(a, "emm")的方式~ 來判斷你的SHEET名稱
然後再進去那個SHEET中撈取資料 |
|
|
學習才能提升自己
|
|
|
|
|
- 帖子
- 559
- 主題
- 58
- 精華
- 0
- 積分
- 626
- 點名
- 0
- 作業系統
- win8
- 軟體版本
- office2013
- 閱讀權限
- 50
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2010-11-22
- 最後登錄
- 2024-6-14
|
10#
發表於 2012-2-23 09:31
| 只看該作者
回復 7# freeffly
H大大是一個高手~ 我不懂的問題~ 拋出來~ 各版大或大大們都能指導解惑唷~
H大大的程式 要有一定的條件才能執行~
執行時要注意SHEET1的日期資料~
若你的日期資料不包含在DATA中的日期~ 就會產生錯誤
舉例~ 你提供的資料是9~10月~ 若你SHEET1的日期在94/9/1以前或94/10/31以後的日期~
就會產生錯誤~
所以~ 要設一個防錯的程式碼~ 不然你執行的時候沒注意就話掛在那邊唷~ |
|
|
學習才能提升自己
|
|
|
|
|
- 帖子
- 586
- 主題
- 123
- 精華
- 0
- 積分
- 763
- 點名
- 0
- 作業系統
- WINDOW7
- 軟體版本
- Office 2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-16
- 最後登錄
- 2017-3-14
 
|
9#
發表於 2012-2-23 09:29
| 只看該作者
回復 4# hugh0620
剛試了一下 這裡還可以改這樣
Sheet1.Cells(N, 1).Resize(, 4) = Array( _
E.Cells(i, 1), _
E.Cells(i, 2), _
E.Cells(i, K), _
E.Cells(i, K).Offset(0, 1)) |
|
|
字典兩各字 還真難理解
|
|
|
|
|
- 帖子
- 586
- 主題
- 123
- 精華
- 0
- 積分
- 763
- 點名
- 0
- 作業系統
- WINDOW7
- 軟體版本
- Office 2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-16
- 最後登錄
- 2017-3-14
 
|
8#
發表於 2012-2-23 09:09
| 只看該作者
回復 5# Hsieh
仔細看過後板主的方式與另外一位大大方式不同(處理方式)
如果說想要向另一位大大那樣抓兩欄要怎麼改
Application.EnableEvents = False 在這裡的用處是? 要讓什麼事件不發生嗎?
sh = Format(a, "emm") emm有特殊規則嗎 看到版主使用才知道有這種方式 |
|
|
字典兩各字 還真難理解
|
|
|
|
|
- 帖子
- 586
- 主題
- 123
- 精華
- 0
- 積分
- 763
- 點名
- 0
- 作業系統
- WINDOW7
- 軟體版本
- Office 2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-16
- 最後登錄
- 2017-3-14
 
|
7#
發表於 2012-2-23 08:41
| 只看該作者
回復 5# Hsieh
感謝版主
這個方式更簡潔
速度感覺更快些
不過有一些不懂
消化後再提問 |
|
|
字典兩各字 還真難理解
|
|
|
|
|