ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Macro lookup is not working good? (https://www.excelbanter.com/excel-discussion-misc-queries/109917-macro-lookup-not-working-good.html)

TooN

Macro lookup is not working good?
 
Hi...

In order to save me a lot of time im working on a macro that looks up a
value i typed in a specific cell and returns a different value next to the
cell that has the same value as i typed in. For example: my sheet looks like
this

Col. B C D E

Activity ID 33 9221
2
1
0005 2
0006 4
0007 6
3
1
9000 2
9001 9
9010 11
9011 22
24
9120 25
9120 26
9121 28
30
9220 31
9221 33
9230 35
9231 41
9270 43
9271 49
51
9510 52

I made a VLOOKUP formula that does the job (=VLOOKUP(E1,B1:C264,2,0)
As you van see in the example that when i type 9221 in column E it returns
33 in column D. Thats perfect and what i want BUT the sheet is so very big
and the data that i have to match is even bigger. So i started working on a
macro that returns me the value in exact the same cell as were i typed in the
reference, here is the macro:

Private Sub Worksheet_Change(Target As Range)
If Target.Address < "$C$2" Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
Target = Columns(2).Find(Target).Offset(, 1)
Application.EnableEvents = True
End Sub

What i want is to type in a value anywere in column D or E or F and return
the value that is in column C. So when i type in D5 (for example) 9011 it
must return 22. Can anyone please help me with the macro???

Thanks

JLatham

Macro lookup is not working good?
 
Look at Application.Intersect to assist with your initial testing to see if a
change was made in column D, E or F

Start ahead of the If kind of like this:
Dim iSect As Range

Set iSect = Application.Intersect (Range(Target.Address), Range("C:E"))
'your if test becomes something like this:
If iSect Is Nothing Then
Exit Sub
End If
'... continue on now knowing that a change did happen in C, D or E
'



"TooN" wrote:

Hi...

In order to save me a lot of time im working on a macro that looks up a
value i typed in a specific cell and returns a different value next to the
cell that has the same value as i typed in. For example: my sheet looks like
this

Col. B C D E

Activity ID 33 9221
2
1
0005 2
0006 4
0007 6
3
1
9000 2
9001 9
9010 11
9011 22
24
9120 25
9120 26
9121 28
30
9220 31
9221 33
9230 35
9231 41
9270 43
9271 49
51
9510 52

I made a VLOOKUP formula that does the job (=VLOOKUP(E1,B1:C264,2,0)
As you van see in the example that when i type 9221 in column E it returns
33 in column D. Thats perfect and what i want BUT the sheet is so very big
and the data that i have to match is even bigger. So i started working on a
macro that returns me the value in exact the same cell as were i typed in the
reference, here is the macro:

Private Sub Worksheet_Change(Target As Range)
If Target.Address < "$C$2" Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
Target = Columns(2).Find(Target).Offset(, 1)
Application.EnableEvents = True
End Sub

What i want is to type in a value anywere in column D or E or F and return
the value that is in column C. So when i type in D5 (for example) 9011 it
must return 22. Can anyone please help me with the macro???

Thanks


TooN

Macro lookup is not working good?
 
Hello...

Thanks for the response but i dont exactually understand what you mean. My
knowledge of creating macro's is not that much! Could you please help me out
a little bit more....

thanks

"JLatham" wrote:

Look at Application.Intersect to assist with your initial testing to see if a
change was made in column D, E or F

Start ahead of the If kind of like this:
Dim iSect As Range

Set iSect = Application.Intersect (Range(Target.Address), Range("C:E"))
'your if test becomes something like this:
If iSect Is Nothing Then
Exit Sub
End If
'... continue on now knowing that a change did happen in C, D or E
'



"TooN" wrote:

Hi...

In order to save me a lot of time im working on a macro that looks up a
value i typed in a specific cell and returns a different value next to the
cell that has the same value as i typed in. For example: my sheet looks like
this

Col. B C D E

Activity ID 33 9221
2
1
0005 2
0006 4
0007 6
3
1
9000 2
9001 9
9010 11
9011 22
24
9120 25
9120 26
9121 28
30
9220 31
9221 33
9230 35
9231 41
9270 43
9271 49
51
9510 52

I made a VLOOKUP formula that does the job (=VLOOKUP(E1,B1:C264,2,0)
As you van see in the example that when i type 9221 in column E it returns
33 in column D. Thats perfect and what i want BUT the sheet is so very big
and the data that i have to match is even bigger. So i started working on a
macro that returns me the value in exact the same cell as were i typed in the
reference, here is the macro:

Private Sub Worksheet_Change(Target As Range)
If Target.Address < "$C$2" Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
Target = Columns(2).Find(Target).Offset(, 1)
Application.EnableEvents = True
End Sub

What i want is to type in a value anywere in column D or E or F and return
the value that is in column C. So when i type in D5 (for example) 9011 it
must return 22. Can anyone please help me with the macro???

Thanks


Dave Peterson

Macro lookup is not working good?
 
I'm confused, but maybe something like this will get you closer:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Res As Variant

If Target.Cells.Count 1 Then Exit Sub 'one cell at a time!
If Intersect(Target, Me.Range("C:E")) Is Nothing Then Exit Sub

On Error GoTo ErrHandler:
Res = Application.VLookup(Target.Value, Me.Range("a:b"), 2, False)

If IsError(Res) Then
Res = "Not Found!"
End If

Application.EnableEvents = False
Target.Offset(0, 1).Value = Res

ErrHandler:
Application.EnableEvents = True

End Sub

TooN wrote:

Hi...

In order to save me a lot of time im working on a macro that looks up a
value i typed in a specific cell and returns a different value next to the
cell that has the same value as i typed in. For example: my sheet looks like
this

Col. B C D E

Activity ID 33 9221
2
1
0005 2
0006 4
0007 6
3
1
9000 2
9001 9
9010 11
9011 22
24
9120 25
9120 26
9121 28
30
9220 31
9221 33
9230 35
9231 41
9270 43
9271 49
51
9510 52

I made a VLOOKUP formula that does the job (=VLOOKUP(E1,B1:C264,2,0)
As you van see in the example that when i type 9221 in column E it returns
33 in column D. Thats perfect and what i want BUT the sheet is so very big
and the data that i have to match is even bigger. So i started working on a
macro that returns me the value in exact the same cell as were i typed in the
reference, here is the macro:

Private Sub Worksheet_Change(Target As Range)
If Target.Address < "$C$2" Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
Target = Columns(2).Find(Target).Offset(, 1)
Application.EnableEvents = True
End Sub

What i want is to type in a value anywere in column D or E or F and return
the value that is in column C. So when i type in D5 (for example) 9011 it
must return 22. Can anyone please help me with the macro???

Thanks


--

Dave Peterson

TooN

Macro lookup is not working good?
 
I entered the code and adjusted it a little bit. Its not working good yet,
the only output i get is Not Found! I try to explain a little bit mo

when i type a value in column D it has to search in column B if that value
is known. If it is a known value it has to return the value in the cell next
to it. So if i enter a vaule in D2 and the value i typed is found in column B
(say B10) it has to return the value that is in C 10 etc etc

"Dave Peterson" wrote:

I'm confused, but maybe something like this will get you closer:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Res As Variant

If Target.Cells.Count 1 Then Exit Sub 'one cell at a time!
If Intersect(Target, Me.Range("C:E")) Is Nothing Then Exit Sub

On Error GoTo ErrHandler:
Res = Application.VLookup(Target.Value, Me.Range("a:b"), 2, False)

If IsError(Res) Then
Res = "Not Found!"
End If

Application.EnableEvents = False
Target.Offset(0, 1).Value = Res

ErrHandler:
Application.EnableEvents = True

End Sub

TooN wrote:

Hi...

In order to save me a lot of time im working on a macro that looks up a
value i typed in a specific cell and returns a different value next to the
cell that has the same value as i typed in. For example: my sheet looks like
this

Col. B C D E

Activity ID 33 9221
2
1
0005 2
0006 4
0007 6
3
1
9000 2
9001 9
9010 11
9011 22
24
9120 25
9120 26
9121 28
30
9220 31
9221 33
9230 35
9231 41
9270 43
9271 49
51
9510 52

I made a VLOOKUP formula that does the job (=VLOOKUP(E1,B1:C264,2,0)
As you van see in the example that when i type 9221 in column E it returns
33 in column D. Thats perfect and what i want BUT the sheet is so very big
and the data that i have to match is even bigger. So i started working on a
macro that returns me the value in exact the same cell as were i typed in the
reference, here is the macro:

Private Sub Worksheet_Change(Target As Range)
If Target.Address < "$C$2" Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
Target = Columns(2).Find(Target).Offset(, 1)
Application.EnableEvents = True
End Sub

What i want is to type in a value anywere in column D or E or F and return
the value that is in column C. So when i type in D5 (for example) 9011 it
must return 22. Can anyone please help me with the macro???

Thanks


--

Dave Peterson


Dave Peterson

Macro lookup is not working good?
 
Try changing this line:
Res = Application.VLookup(Target.Value, Me.Range("a:b"), 2, False)
to
Res = Application.VLookup(Target.Value, Me.Range("b:c"), 2, False)

(Use the range that holds your lookup table.)

TooN wrote:

I entered the code and adjusted it a little bit. Its not working good yet,
the only output i get is Not Found! I try to explain a little bit mo

when i type a value in column D it has to search in column B if that value
is known. If it is a known value it has to return the value in the cell next
to it. So if i enter a vaule in D2 and the value i typed is found in column B
(say B10) it has to return the value that is in C 10 etc etc

"Dave Peterson" wrote:

I'm confused, but maybe something like this will get you closer:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Res As Variant

If Target.Cells.Count 1 Then Exit Sub 'one cell at a time!
If Intersect(Target, Me.Range("C:E")) Is Nothing Then Exit Sub

On Error GoTo ErrHandler:
Res = Application.VLookup(Target.Value, Me.Range("a:b"), 2, False)

If IsError(Res) Then
Res = "Not Found!"
End If

Application.EnableEvents = False
Target.Offset(0, 1).Value = Res

ErrHandler:
Application.EnableEvents = True

End Sub

TooN wrote:

Hi...

In order to save me a lot of time im working on a macro that looks up a
value i typed in a specific cell and returns a different value next to the
cell that has the same value as i typed in. For example: my sheet looks like
this

Col. B C D E

Activity ID 33 9221
2
1
0005 2
0006 4
0007 6
3
1
9000 2
9001 9
9010 11
9011 22
24
9120 25
9120 26
9121 28
30
9220 31
9221 33
9230 35
9231 41
9270 43
9271 49
51
9510 52

I made a VLOOKUP formula that does the job (=VLOOKUP(E1,B1:C264,2,0)
As you van see in the example that when i type 9221 in column E it returns
33 in column D. Thats perfect and what i want BUT the sheet is so very big
and the data that i have to match is even bigger. So i started working on a
macro that returns me the value in exact the same cell as were i typed in the
reference, here is the macro:

Private Sub Worksheet_Change(Target As Range)
If Target.Address < "$C$2" Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
Target = Columns(2).Find(Target).Offset(, 1)
Application.EnableEvents = True
End Sub

What i want is to type in a value anywere in column D or E or F and return
the value that is in column C. So when i type in D5 (for example) 9011 it
must return 22. Can anyone please help me with the macro???

Thanks


--

Dave Peterson


--

Dave Peterson


All times are GMT +1. The time now is 07:20 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com