標題:
請問大大出現重複的值要怎麼抓相對應的值
[打印本頁]
作者:
藍天麗池
時間:
2013-7-8 21:25
標題:
請問大大出現重複的值要怎麼抓相對應的值
本帖最後由 藍天麗池 於 2013-7-8 21:27 編輯
A B C D E
84558 7956 1 7951.886961 845
84558 7957 1 7951.889495 845
84558 7956 1 7951.89153 845
84558 7956 1 7951.893564 845
84558 7957 3 7951.901137 845
84558 7956 1 7951.903162 845
84559 7957 1 7951.905679 845
84559 7957 1 7951.908193 845
84559 7957 9 7951.930713 845
84559 7957 1
7951.933202
845
84600 7957 3 7951.940657
846
84600 7957 1 7951.943137 846
84600 7957 1 7951.945615 846
84600 7957 5 7951.957967 846
84601 7957 4 7951.967805 846
84601 7957 1 7951.970258 846
84601 7957 2 7951.975158 846
84601 7958 2 7951.981022 846
請問大大,我要怎麼寫VBA當E欄出現846時抓上一個845所對應左邊的值(7951.933202)
作者:
sunnyso
時間:
2013-7-8 22:52
重複的數值都是連續的嗎?
作者:
oobird
時間:
2013-7-9 07:38
試試:a = [e:e].Find(846, [e65536], , 1)(0, 0)
作者:
藍天麗池
時間:
2013-7-9 10:12
回復
3#
oobird
大大,抱歉小弟還是新手,可以說明一下嗎??
在VBA上要如何呈現
作者:
藍天麗池
時間:
2013-7-9 10:42
回復
2#
sunnyso
對,都是連續的,E欄的值是抓A欄值的小時和分
作者:
cji3cj6xu6
時間:
2013-7-9 11:29
Sub Macro1()
Dim DQ As Integer
'
For DQ = 1 To 17
If Range("D" & DQ).Value = 846 Then
Range("E" & DQ).Value = Range("c" & DQ - 1).Value
DQ = 17 ' 如果是一看到就結束,否則此指令可關閉
Else
End If
Next DQ
End Sub
作者:
藍天麗池
時間:
2013-7-9 16:14
回復
6#
cji3cj6xu6
大大,我的資料還要抓847,848,849...一直到1344,所以都要這樣嗎??
可以簡略寫法嗎??
作者:
藍天麗池
時間:
2013-7-9 16:18
標題:
這個VBA要怎麼寫
本帖最後由 藍天麗池 於 2013-7-8 21:27 編輯
A B C D E F
84558 7956 1 7951.886961 845
84558 7957 1 7951.889495 845
84558 7956 1 7951.89153 845
84558 7956 1 7951.893564 845
84558 7957 3 7951.901137 845
84558 7956 1 7951.903162 845
84559 7957 1 7951.905679 845
84559 7957 1 7951.908193 845
84559 7957 9 7951.930713 845
84559 7957 1 7951.933202 845
84600 7957 3 7951.940657 846
84600 7957 1 7951.943137 846
84600 7957 1 7951.945615 846
84600 7957 5 7951.957967 846
84601 7957 4 7951.967805 846
84601 7957 1 7951.970258 846
84601 7957 2 7951.975158 846
84601 7958 2 7951.981022 846
請問版上大大,我要寫一個VBA的邏輯是搜尋E欄的內容(因為E欄是公式),當E欄出現846時在F2顯示845所對應左邊的值(7951.933202),這個VBA要怎麼寫
作者:
cji3cj6xu6
時間:
2013-7-9 18:12
我的資料還要抓847,848,849...一直到1344,所以都要這樣嗎?? ==> 每次只抓第一筆嗎?
可以簡略寫法嗎?? ==> 我只會if then / for 迴圈 的寫法,呵呵∼
Sub Macro1()
Dim DQ, EndLine, FindValue As Integer
'
EndLine =2000 '最後一筆資料
FindValue =846
For DQ = 1 To EndLine
If Range("E" & DQ).Value = FindValue Then
Range("F" & DQ).Value = Range("D" & DQ - 1).Value
FindValue=FindValue+1
Else
End If
Next DQ
End Sub
作者:
sunnyso
時間:
2013-7-9 21:14
回復
5#
藍天麗池
根據你的條件(連續時間)不用VBA就可以做到,見附件。你一定要用VBA嗎?
[attach]15388[/attach]
[attach]15389[/attach]
作者:
藍天麗池
時間:
2013-7-9 21:19
回復
9#
sunnyso
大大,小弟還無法下載附件,可以直接貼上來嗎??
大大用的是DMAX函數嗎??
作者:
藍天麗池
時間:
2013-7-9 21:32
回復
9#
sunnyso
如果是用DMAX是不行的,我試過了
作者:
kimbal
時間:
2013-7-9 22:50
F2 的公式
=OFFSET(D1,MATCH(846,E:E,0)-2,0)
VBA:
On Error Resume Next
[F2] = [D1].Offset(Application.WorksheetFunction.Match(846, Columns(5), 0) - 2)
複製代碼
作者:
藍天麗池
時間:
2013-7-9 23:46
回復
2#
kimbal
大大你的兩個方法都不行,第一個方法由於E欄是公式所以MATCH找不到
第二個方式VBA出現錯誤1004(無法取得類別worksheetfunction的match屬性)
請問大大以上問題要如何解決呢??
作者:
藍天麗池
時間:
2013-7-9 23:54
回復
13#
sunnyso
大大你這個方法也不行ㄟ,感謝大大
作者:
sunnyso
時間:
2013-7-10 09:58
回復
14#
藍天麗池
upload your Excle file
作者:
GBKEE
時間:
2013-7-12 16:18
回復
12#
藍天麗池
程式碼依你1#的資料所寫試試看
Option Explicit
Sub Ex()
'Dim(關鍵字) 宣告變數為程式私用的變數
Dim N As String, Rng As Range 'String 字串型態 'Range(範圍)型態為物件
With Sheets("資料表") '修正為正確的工作表名稱
'.[E:E] = .Range("E:E") 'Sheets("資料表")的 E 欄
'Application.Max(.[E:E]) ->傳回E欗 最大值
'Application.Min (.[E:E])->傳回E欗 最小值
'N = InputBox("輸入數值") '不預設數值 用此程式碼
'InputBox 函數 顯示一對話方塊來做為提示,等使用者輸入文字或按下按鈕,並傳回包含文字方塊內容的String。
N = InputBox("輸入數值", , Application.Max(.[E:E]))
Set Rng = .Range("E:E").Find(What:=N, After:=Range("E1"), LookAt:=xlWhole) 'SET(設立物件變數)的關鍵字
' 請詳看 VBA Find方法, InputBox 函數 的說明
If Not Rng Is Nothing Then 'Nothing: Find 找不到 N(的數值)
If Rng.Row = 2 Then '當Rng(物件)的列號是 2
Set Rng = Rng.Offset(, -1) '物件:原物件 列位( 不動 ),欗位(左移一欄)
Else
Set Rng = Rng.Offset(-1, -1) '物件:原物件 列位(上升一列),欗位(左移一欄)
End If
Rng.Select
MsgBox Rng.Address
End If
End With
End Sub
複製代碼
作者:
yangjie
時間:
2013-7-13 12:13
藍天
你的Data是否為Excel a,b,c,d,e,f,...欄(已建立好)之情形下,
只要整合找出不同的 e 欄value 對應值為上ㄧ列d欄
若是如此,用VBA才是王道
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)