返回列表 上一主題 發帖

不好意思 新手又來請教 資料比對問題 麻煩各位了

不好意思 新手又來請教 資料比對問題 麻煩各位了

本帖最後由 ffntldj 於 2011-7-23 01:26 編輯

不好意思 實在寫不出來 用了一堆if 跟for 實在好難  有問題想請教,
   資料不只三筆 只列出三筆 (附圖如下)

   1.如果想把 A sheet裡 mod part以下 action以上 (紅色字體 )裡的資料 填入A1 但是如果資料是重覆 ,則不重複表示 (如A1 sheet) 該怎麼做?

       之前是用板大教的
       Set d = CreateObject("Scripting.Dictionary")
    If a = "Mod part" Then mystr = a.Offset(1,0).Text

     但是如果遇到Mod part下面有很多筆 就不知道該怎麼寫了

   2. 比對A sheet 和 C sheet裡面的資料,當A sheet裡的紅色跟藍色 , 跟B sheet的partid欄位跟ope_no欄位

      都能夠match的話,將對應到的資料放到  B1 sheet裡面 (如B1所示)
   

附件如下   再麻煩大家了 真是不好意思 Book1.rar (2.57 KB)

比對A sheet 和 C sheet裡面的資料,當A sheet裡的紅色跟藍色 , 跟B sheet的partid欄位跟ope_no欄位
此處打錯 應該是 比對A sheet 和 B sheet ,當A sheet裡的紅色跟藍色 , 跟B sheet的partid欄位跟ope_no欄位
抱歉  程式碼我研究一下

TOP

版主你好

謝謝你的code 讓我獲益良多 很感謝你   code沒有問題 ,但有些地方我看不懂 google過了也還是不會

想直接跟你請教,謝謝

1.   If IsError(Application.Match(Rng, Ar, 0))   這句是"在陣列比對不到同樣的字串 傳回錯誤"
      是說 如果ar裡面不是Mod part和ACTION就會傳回值然後往下走嘛?

2.  If IsError(Application.Match(Rng(1) & Rng(2).Offset(, 1), Ar, 0)) Then   
     這邊的ope_no 是用Offset的方式去寫,今天再想一各問題 如果想用欄位名稱(ope_no)去認的話這邊該怎麼改寫?是不是用一個回圈去抓第一列的名字?

3.如果A sheet在比對 B sheet時候, 如果只要B sheet裡PART ID的第一碼到第N碼  (如TMD1213 ,TMD1214)當他等於 A Sheet裡面的值時 ,也要把它抓出來的話 該怎麼做? 這我真的就不會了~~

以上 謝謝

TOP

你好 謝謝版主跟超級版主的大力幫忙 有這個網站對我來說實在是獲益良多~ 謝謝你們

小弟初學vba 很多東西不會 都是在這努力爬文的 很感謝有這地方

以上的code沒錯 錯的是我自己的觀念 謝謝你們的糾正

14.If IsError(Application.Match(Rng(1) & Rng(2).Offset(, 1), Ar, 0)) Then
這邊抓到的rng(2)是MODIFY 然後用shift去抓ope_no的值,我的意思是 如果不用offset 有什麼方式可以去認他的欄位名稱 ope_no ?

22.For Each R In Sheets("B").Range("a1").CurrentRegion.Rows 'R ->依序在Sheets("B")[A1延伸範圍的每一列

這應該是把b-sheet 一列一列的資料往下抓出來,如果我像上面一樣也是需要抓欄位名稱呢?

(就是當b-sheet part_id 跟 ope_no 都符合時,可以去抓到flow 跟flow1的名稱,然後把它copy到b1 sheet)

不知道這樣的描述看的懂嘛 謝謝版主

TOP

回復 23# GBKEE

不好意思 研究了一個禮拜 還是很痛苦 很多問題 再來請教~ 謝謝

1 如附檔 A SHEET,之前都沒有空白格開(現在有空白 所以不能用Do ,Loop Until Rng = "",我把它改寫成For each rng(1) in sheet("a").range(sheet(a).[A1],sheet(a)[A65536].End(xlup))
但現在遇到一個問題  之前ACTION 下方只會有一個MODIFY, 現在會有很多個,如果用 Set Rng(2) = Sheets("a").Columns(1).Find(Word_Look, After:=Rng(1), lookat:=xlWhole, MatchCase:=False)  '尋找最接近的 "MODIFY"
只會抓的到第一個. 如果ACTION下方 只要是MODIFY SPEC的 我都要抓到 該怎麼做,如下範例

TMD101-E121--240.05
TMD102-E123--240.05
TMD103-E124--240.05
TMC102-E125--240.05

TMD101-E121--240.06
TMD102-E123--240.06
TMD103-E124--240.06
TMC102-E125--240.06

2  SHEET B 是資料庫裡的檔案,本來就有的 ,當a sheet抓出來之後(如上題),要去比對b sheet的資料(part_id 和ope_no欄位),如果確定資料符合就會寫入B1欄位(如B1),但是在B sheet裡面PARTID會有一些只有前六碼符合的資料(如綠色標記),也要將他視為資料符合 這邊的話 不知道怎麼改@@?

3 B1 Sheet的 item0~item3 是當check過a sheet 和b sheet之後 如果資料符合,要將b sheet裡符合的資料 copy 到b1,  item4 則是從a的spec id 抓過來(如紫色標記),請問我該怎麼寫?

以上 謝謝各位的教導~~

ScreenHunter_06 Aug. 01 22.37.gif (69.23 KB)

ScreenHunter_06 Aug. 01 22.37.gif

ScreenHunter_07 Aug. 01 22.40.gif (46.79 KB)

ScreenHunter_07 Aug. 01 22.40.gif

Book1.rar (4.76 KB)

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題