返回列表 上一主題 發帖

[發問] 在同一列同時比對兩欄資料方法

[發問] 在同一列同時比對兩欄資料方法

各位先進,小弟因工作需要要用excel 做一些資料的處理,目前遇到些問題,希望各位先進能幫我解惑

品號     名稱     製程    工序    工時
123      剪刀     下料       1       100
123      剪刀     粗胚       2       200
123      剪刀     研磨       3       100
124      叉子     下料       1       100

資料結構大概是這樣,我想同時蒐尋當品號123、工序是1,這筆資料列的位置,因為我想把相對應之工時這欄位資料擷取出來,麻煩各位先進了~謝謝

回復 1# 假面超人
進階篩選即可
play.gif
學海無涯_不恥下問

TOP

回復 2# Hsieh

抱歉!不知是否有範例檔案,影片看不太清處詳細內容

TOP

原來按下去就可以放大,謝謝您
不知道是否還有其他方法?因為資料幾萬筆,欄位數也很多
我主要是想知道該列的位置,然後擷取某幾個欄位的資料填到別的欄位上

TOP

  1. 品號     名稱     製程  工時
  2. 123      剪刀     下料       1       100
  3. 123      剪刀     粗胚       2       200
  4. 123      剪刀     研磨       3       100
  5. 124      叉子     下料       1       100
複製代碼
假設你的資料是如上述的方式排列(也就是 "品號"在A1 , "名稱"在B1 , "123"在A2..以此類推)
我會用以下的方式節選出來
PS:把資料放在Sheet1 , 多開一個sheet2(資料會轉存到這)
  1. Sub Trans()
  2. Dim New_Count,Data_Count,I as Double
  3. Dim Key_Word1 as string
  4. Dim Key_Word2 as string

  5. worksheets(2).range("A1").value="品號"
  6. worksheets(2).range("B1").value="工序"

  7. Data_Count=worksheets(1).range("A65536").end(xlup).row

  8. For I = 1 to Data_Count
  9.       Key_Word1=worksheets(1).range("A" & I).value  '品號
  10.       Key_Word2=worksheets(1).range("D" & I).value  '工序

  11.           If Key_Word1="123" and Key_Word1="1" Then
  12.                    New_Count=worksheets(2).range("A65536").end(xlup).row
  13.                    worksheets(2).range("A" & New_Count+1).value=Key_Word1
  14.                    worksheets(2).range("B" & New_Count+1).value=Key_Word2
  15.         End IF
  16. Next I
  17. end sub
複製代碼

TOP

我主要是想知道該列的位置,然後擷取某幾個欄位的資料填到別的欄位上假面超人 發表於 2012/8/2 00:24

上傳檔案來看看

TOP

回復 5# smouse0220


真的太謝謝你了,這樣讓又能繼續寫下去了!

第15列中的                                   If Key_Word1="123" and Key_Word1="1" Then
好像有點問題,我修改成          If Key_Word1="123" and Key_Word2="2" Then
就能正常判斷了

TOP

剛試了一下,還是不行
我想要做的是
當判斷品號和工序是在同一列時
去抓在同一列裡面工時這個資料

原本只用vlooKup 去判斷和抓資料,但他只能判斷單一的資料
當遇到多筆重複的資料時只會去抓最先找的那一筆
摸索了好久
才想到VBA或許能解決這問題
請個位先進指點一下!!謝謝

TOP

回復 6# GBKEE


多筆資料判斷.rar (9.03 KB)

這只是類似要處理的檔案
檔案來源是
第一個工作頁的品號欄由BOM表展開,後面的名稱、製程等都是後來要從其他工作頁抓過來填入
後面工作頁是由現場單位實際情況生產情況回報回來

目前要處理的動作
第一個工作頁的品號欄都是獨立不會重複,但其他工作頁的品號會重複(因為資料來源就是這樣),所以我才會想既然裡面有工序,就以工序做第二判斷條件去抓取同一列裡面如工時等其他資料回寫到工作頁1裡面,如果有三個相同品號但工序不同的資料,會依照工序順序在下面又新增兩列,再把資料抓進來(這部分目前寫道變成無窮迴圈,還在動腦中)

TOP

回復 9# 假面超人

進階篩選很容易達成
play.gif
如果堅持寫迴圈
  1. Sub ex()
  2. Dim Ar()
  3. With Sheet1
  4. For Each a In .Range(.[A2], .[A2].End(xlDown))
  5.    With Sheet2
  6.       For Each b In .Range(.[A2], .[A2].End(xlDown))
  7.          If b = a Then
  8.          ReDim Preserve Ar(s)
  9.          Ar(s) = Array(b.Value, b.Offset(, 1).Value, b.Offset(, 2).Value, b.Offset(, 4).Value)
  10.          s = s + 1
  11.          End If
  12.       Next
  13.    End With
  14.    Sheet3.[A65536].End(xlUp).Offset(1).Resize(s, 4) = Application.Transpose(Application.Transpose(Ar))
  15.    Erase Ar
  16.    s = 0
  17. Next
  18. End With
  19. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 發脾氣是短暫的發瘋。
返回列表 上一主題