昱得資訊工作室
麻辣學園
歡迎光臨, 訪客. 請先 登入註冊一個帳號.
您忘了 啟用您的帳號嗎?
2008-07-06, 14:57:06
首頁 說明 登入 註冊 贊助論壇 想當作者?
新聞: 會員注意!!麻辣家族討論區[通用版規],請詳閱!!


+  麻辣家族討論區
|-+  MS Office 系列
| |-+  EXCEL
| | |-+  Excel程式區 (版主: hsieh)
| | | |-+  如何比較資料??
0 會員 以及 1 訪客 正在閱讀本篇主題. « 上一篇主題 下一篇主題 »
頁: [1] 向下 列印
作者 主題: 如何比較資料??  (閱讀 489 次)
qazx
中學生
*
離線 離線

文章: 14


如何比較資料??
« 於: 2008-05-13, 23:51:16 »

各位先進們:

小弟有一問題想要請教大大們,即 使用下例當說明

當中心值相同則比較數列其offset1與offset2是否相同,如果不同則以哪個日期較大者當作當作標準
,則秀出與標準有相同的中心值但其offset1 or offset2不同的 n1

例如下例: n1 :312,322,502 其中心值相同皆為0.647, 該三各n1中以322的日期最大,

故312/502的 offset1/offset2皆必須與322的offset1/offset2一樣,如果不同時則秀出

502

n1      offset1   offset2  日期          中心值      

92      0.0004    0.0043    20080320  0.65
192   0.0004    0.0043    20080320  0.638
312   0.0000    0.0076    20080313  0.647
322   0.0000    0.0076    20080403  0.647
502   0.0000    0.0053    20080303  0.647
已記錄
oobird
凸槌的木工
論壇維護群
*
在線 在線

文章: 4228


Re: 如何比較資料??
« 回覆文章 #1 於: 2008-05-14, 16:43:54 »

重新整理一下吧,有點不知所云。
最好把文件上傳,看得明白些!
已記錄

結廬待慧君;為使大家少猜題,請在附件中詳細說明 要求 和 效果,解決問題效率高。
hsieh
版主
*
離線 離線

會員性別: 男
文章: 3696



Re: 如何比較資料??
« 回覆文章 #2 於: 2008-05-14, 20:23:21 »

假設表格位於A:E
程式碼:
Sub nn()
Dim ds As Object, d As Object, A As Range
Set ds = CreateObject("Scripting.Dictionary")
Set d = CreateObject("Scripting.Dictionary")
For Each A In Range([E2], [E65536].End(xlUp))
 If ds(A.Value) = "" Then
 ds(A.Value) = Join(Array(A.Offset(, -4), A.Offset(, -3), A.Offset(, -2)), ",")
 Else
 If Val(Split(ds(A.Value), ",", -1)(1)) <> A.Offset(, -3) Or Val(Split(ds(A.Value), ",", -1)(2)) <> A.Offset(, -2) Then d(A.Offset(, -4)) = ""
 End If
Next
MsgBox Join(d.keys, Chr(10))
End Sub
已記錄

回答滿意嗎?
  記得告訴我哦!!
qazx
中學生
*
離線 離線

文章: 14


Re: 如何比較資料??
« 回覆文章 #3 於: 2008-05-14, 23:58:19 »


 很感謝 大大們的回答,小弟的發問可能寫的不清楚,很抱歉小弟再寫一次我的問題,希望大大們可以幫忙
謝謝大大們

  ID   N1   offset1   offset2      date          target
31.5   92   0.0004   0.0043   20080320   0.65
31.5   93   0.0038   0.0063   20080303   0.587
31.5   94   -0.0064   -0.0135   20080305   0.101
46   102   0.0004   0.0043   20080320   0.647
46   103   0.0013   0.008   20080320   0.584
47   112   0.0004   0.0043   20080303   0.647
47   113   0.0013   0.008   20080303   0.584
40   122   0.0004   0.0043   20080320   0.647
31.5   312   0.0014   0.0076   20080303   0.647
31.5   322   0.0015   0.0076   20080403   0.647
31.5   502   0.0012   0.0053   20080303   0.647

問題為
我要尋找當
target與ID相同的列,則比較兩者 offset1/offset2 是否相同,如果相同則報ok,當兩者offset部同時
,則以date最大的offset值當標準,秀出與標準不同的N1

***例如 (須滿足 ID與target相同)條件下可得下列

ID   N1   offset1   offset2      date          target
31.5   312   0.0014   0.0076   20080303   0.647
31.5   322   0.0015   0.0176   20080403        0.647
31.5   502   0.0012   0.0053   20080303   0.647

後續又比較三者間日期大小,又以 ID為322的date最大,故以其為標準,當312 /502 的

offset1/offset2 與322的 offset1/offset2 不同時,則必須秀 "312/502 ;標準為 322 ",如三者其

offset1/offset2皆相同者則不報任何訊息


麻煩各位先進幫忙,小弟感激不盡
已記錄
oobird
凸槌的木工
論壇維護群
*
在線 在線

文章: 4228


Re: 如何比較資料??
« 回覆文章 #4 於: 2008-05-15, 10:49:14 »

無法明白,你的範例只是取出target與ID相同的列, 沒作任何變動。
已記錄

結廬待慧君;為使大家少猜題,請在附件中詳細說明 要求 和 效果,解決問題效率高。
hsieh
版主
*
離線 離線

會員性別: 男
文章: 3696



Re: 如何比較資料??
« 回覆文章 #5 於: 2008-05-15, 10:54:28 »

程式碼:
Private Sub CommandButton1_Click()
Dim c, ans, Arr(), ds As Object, ds1 As Object, ds2 As Object, i&
Set ds = CreateObject("Scripting.Dictionary")
Set ds1 = CreateObject("Scripting.Dictionary")
Set ds2 = CreateObject("Scripting.Dictionary")
Arr = Range("A1").CurrentRegion
For i = 1 To UBound(Arr)
If ds(Arr(i, 1) & "," & Arr(i, 6)) = "" Then
  ds(Arr(i, 1) & "," & Arr(i, 6)) = Arr(i, 5): ds1(Arr(i, 1) & "," & Arr(i, 6)) = Arr(i, 2) & "," & Arr(i, 3) & "," & Arr(i, 4)
   ElseIf ds(Arr(i, 1) & "," & Arr(i, 6)) < Arr(i, 5) Then
  ds(Arr(i, 1) & "," & Arr(i, 6)) = Arr(i, 5): ds1(Arr(i, 1) & "," & Arr(i, 6)) = Arr(i, 2) & "," & Arr(i, 3) & "," & Arr(i, 4)
End If
Next
For i = 1 To UBound(Arr)
If Arr(i, 5) <> ds(Arr(i, 1) & "," & Arr(i, 6)) Then
  ans = Split(ds1(Arr(i, 1) & "," & Arr(i, 6)), ",", -1)
  If ans(1) <> Arr(i, 3) Or ans(2) <> Arr(i, 4) Then
   If ds2(ans(0)) = "" Then
   ds2(ans(0)) = Arr(i, 2)
   Else
   ds2(ans(0)) = ds2(ans(0)) & "/" & Arr(i, 2)
   End If
  End If
End If
Next
For Each c In ds2.keys
  MsgBox ds2(c) & ";標準為" & c
Next
End Sub
不知是否這樣

* 檢查.rar (9.83 KB - 已被下載 4 次.)
已記錄

回答滿意嗎?
  記得告訴我哦!!
頁: [1] 向上 列印 
« 上一篇主題 下一篇主題 »
跳到:  


本頁花了 0.104 秒, 以及 20 次的資料庫查詢.