作者: FTO 時間: 2017-4-1 21:29 標題: EXCEL 複製持定條件數據到新 sheet
想問有無方法 可以設定特定條件 將符合條件數據整行複製到新SHEET入面
如上表 我只想將含有"工廠A" 的行複製到新SHEET 應該要點做
https://h0.hkepc.com/forum/attachment.php?aid=1971601&k=d6bd51c972126044c57296a6d06295af&t=1781659065&sid=g6D3QDH9Cq

作者: bongbong3481 時間: 2017-4-1 22:10
回覆 1# FTO
留名學野
(其實用VBA會唔會容易整,但我唔多識;)
作者: FTO 時間: 2017-4-1 22:36
VBA 我知可以做到
我想諗下有無可以能唔用都做到 (因為未必每部機都有權限設定巨集)
同我剛剛已查到唔用VBA 都可以做到
作者: myricky 時間: 2017-4-1 23:16
提示: 作者被禁止或刪除 內容自動屏蔽
作者: 狂蜂一號 時間: 2017-4-2 01:11
回覆 4# myricky
Data > Filter ...
作者: kcthomlau 時間: 2017-4-2 08:41
http://isvincent.pixnet.net/blog/post/34528763-excel-index+match練習
試下用index match
作者: simontang 時間: 2017-4-2 11:20
http://www.hkepc.com/forum/viewt ... &extra=page%3D1
之前已有答案
作者: myricky 時間: 2017-4-2 15:20
提示: 作者被禁止或刪除 內容自動屏蔽
作者: 狂蜂一號 時間: 2017-4-2 22:28
回覆 8# myricky
"複製"這個動作,如果不用 VBA,有可能"自動"嗎?
作者: myricky 時間: 2017-4-2 23:55
提示: 作者被禁止或刪除 內容自動屏蔽
作者: 狂蜂一號 時間: 2017-4-3 00:19
回覆 10# myricky
I agree. Let me think again how it can work.
作者: tak5tak 時間: 2017-4-6 10:17
回覆 7# simontang
正解~ 一樣可以呢個方法
A4寫:
=IF(ISERROR(INDEX(Sources!$A:$D,SMALL(IF(Sources!$B:$B=$B$1,ROW(Sources!$B:$B)),ROW(1:1)),1)),"",INDEX(Sources!$A:$D,SMALL(IF(Sources!$B:$B=$B$1,ROW(Sources!$B:$B)),ROW(1:1)),1))
Press CONTROL-SHIFT-ENTER
將A4 copy 去 B4至D4, B4將紅字改去2, 如此類推
https://h0.hkepc.com/forum/attachment.php?aid=1972761&k=9185aa778d48dc21d47eac806be5026e&t=1781659065&sid=g6D3QDH9Cq

作者: facat 時間: 2017-4-7 15:29
回覆 1# FTO
可以用vba 如下:
將以下所有copy 去你現有之excel 表
Dim TargetShtRow As Long
Sub Copy2OtherSht()
'首先 設定好晒 所需數據
'這些數據用來交比下面個 function Copydata 用
SourceSht = "工作表1": TarSht = "工作表2"
AtCol = "A"
'假設欄名以下是row 2
TargetShtRow = 2
FndString = "產品A"
' 只要改變以上數字 閣下喜歡用那一直行尋找 數字都可以
'Clean Target Sheet old data
'清除目的地 欄名以下的數據
Call ClearSht(TarSht, TargetShtRow)
'Call function CopyData
Call CopyData(SourceSht, TarSht, AtCol, TargetShtRow, FndString)
End Sub
Function CopyData(SourceSht, TarSht, AtCol, TargetShtRow, FndString)
Dim lr As Long, r As Long
By_Column = AtCol
'Find total no. of rows in Sheets
lr = Sheets(SourceSht).Cells(Rows.Count, By_Column).End(xlUp).Row
For r = lr To 2 Step -1
If Sheets(SourceSht).Range(By_Column & r).Value = FndString Then
Sheets(SourceSht).Rows(r).Copy Destination:=Sheets(TarSht).Range("A" & TargetShtRow)
TargetShtRow = TargetShtRow + 1
End If
Next r
End Function
Sub ClearSht(TarSht, TargetShtRow)
TarRange = "A" & TargetShtRow & ":J200"
'Sheets(TarSht).Range("A3:J200").Clear 'use either one
Sheets(TarSht).Range(TarRange).Clear
' .Range(.Cells(1, 1), .Cells(50, 50)).Clear
End Sub
作者: FTO 時間: 2017-4-10 08:10
感謝以上各位 提供的資料
等我今晚返去post條唔洗VBA公式出黎
雖然方法係可以 但好食部腦資源
作者: facat 時間: 2017-4-10 09:26
回覆 14# FTO
呢個vba 好有彈性架,又吾食資源,2秒已經做完
你可以隨時改以下的資料就返你自己張sheet
如果想從另一個 Column 例如 Col F output 資料,只要改 AtCol = "F" 就可以
甚芒至付將下面所有要求入晒落呢個routine 既paramater 都得
變成 : Sub Copy2OtherSht(SourceSht,TarSht,AtCol,TargetShtRow,FndString)
甘就任意何一張 sheet 及 Column 都可以output 所須data
SourceSht = "工作表1": TarSht = "工作表2"
AtCol = "A"
TargetShtRow = 2
FndString = "產品A"
作者: myricky 時間: 2017-4-10 12:56
提示: 作者被禁止或刪除 內容自動屏蔽
作者: tak5tak 時間: 2017-4-10 13:54
係食咖, 一係你指定個SOURCES有幾多行
A4寫:
=IF(ISERROR(INDEX(Sources!$A$1:$D$6,SMALL(IF(Sources!$B$1:$B$6=$B$1,ROW(Sources!$B$1:$B$6)),ROW(1:1)),1)),"",INDEX(Sources!$A$1:$D$6,SMALL(IF(Sources!$B$1:$B$6=$B$1,ROW(Sources!$B$1:$B$6)),ROW(1:1)),1))
Press CONTROL-SHIFT-ENTER
將A4 copy 去 B4至D4, B4將紅字改去2, 如此類推
7000 rows都仲識郁
不過如果你個SOURCES再大, 一樣死
作者: FTO 時間: 2017-4-10 19:42
逼於無奈 都係要用VBA 先搞得掂 因為一般都有成萬條數據
公司電腦又cheap 做小小野都LAG到爆
作者: FTO 時間: 2017-4-10 19:46
係食咖, 一係你指定個SOURCES有幾多行
A4寫:
=IF(ISERROR(INDEX(Sources!$A$1:$D$6,SMALL(IF(Sources!$B ...
tak5tak 發表於 2017-4-10 13:54
你個方法好似仲方便
因為我要人手選 SOURCES 資料範圍後 按Ctrl+Shift+F3
=IFERROR(INDEX(INDIRECT(A$1),SMALL(IF(工廠名="工廠A",ROW(工廠名),FALSE),ROW(1:1))-1,1),"")
輸入完成要按 Ctrl+Shift+Enter 鍵
公司仟幾條 已經超LAG
作者: myricky 時間: 2017-4-10 23:57
提示: 作者被禁止或刪除 內容自動屏蔽
作者: FTO 時間: 2017-4-11 08:04
現在都只有用VBA 因為之前方法太LAG
作者: tak5tak 時間: 2017-4-11 09:55
回覆 20# myricky
我都想學VBA, 好多時formula遇到瓶頸...

剩係識抄人啲code, 改改下
有咩渠道可以學?
作者: myricky 時間: 2017-4-11 15:16
提示: 作者被禁止或刪除 內容自動屏蔽


