回覆 10# myricky

I agree. Let me think again how it can work.

TOP

回覆 7# simontang

正解~ 一樣可以呢個方法

Capture2.PNG
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, 如此類推

TOP

回覆 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

TOP

感謝以上各位 提供的資料
等我今晚返去post條唔洗VBA公式出黎
雖然方法係可以 但好食部腦資源

TOP

回覆 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"

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

感謝以上各位 提供的資料
等我今晚返去post條唔洗VBA公式出黎
雖然方法係可以 但好食部腦資源 ...
FTO 發表於 2017-4-10 08:10


係食咖, 一係你指定個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再大, 一樣死

TOP

你地都話明唔要VBA囉, 你仲sell乜鬼...
myricky 發表於 2017-4-10 12:56



    逼於無奈 都係要用VBA 先搞得掂 因為一般都有成萬條數據
    公司電腦又cheap 做小小野都LAG到爆

TOP

係食咖, 一係你指定個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

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP