Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 25
Default Replacing "IF" or "Lookup" formulas with VBA function

In worksheet1 I have a range (a1:b12).
In worksheet2 I have 12 column headings (a1:l1) and I want to search
worksheet1 range a1:a12 for the corresponding column headings then populate
worksheet2(a2:l2) with the data from worksheet1 (b1:b12).
I was able to use the "IF" formula in worksheet2 until I expanded past the 7
nested functions rule. I've tried to use Lookup and Vlookup formulas but both
require sorting which is not an option.
I've also tried to use the IFELSE function and LOOKUP functions in VBA
without success.

I appreciate the assistance and enjoy the learnings that go into problem
solving.

Thanks,
dhunter43
The Performance Advantage, LLC
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Replacing "IF" or "Lookup" formulas with VBA function

Try this in the standard VBA module.

Sub cpy()
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
i = i + 1
Next
End Sub

"dhunter43" wrote:

In worksheet1 I have a range (a1:b12).
In worksheet2 I have 12 column headings (a1:l1) and I want to search
worksheet1 range a1:a12 for the corresponding column headings then populate
worksheet2(a2:l2) with the data from worksheet1 (b1:b12).
I was able to use the "IF" formula in worksheet2 until I expanded past the 7
nested functions rule. I've tried to use Lookup and Vlookup formulas but both
require sorting which is not an option.
I've also tried to use the IFELSE function and LOOKUP functions in VBA
without success.

I appreciate the assistance and enjoy the learnings that go into problem
solving.

Thanks,
dhunter43
The Performance Advantage, LLC

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 25
Default Replacing "IF" or "Lookup" formulas with VBA function

I'm getting a "Type Mismatch" error. Perhaps you need more info.
The column headings in worksheet2 text headings i.e. 14Sheeting, 15Printing
Of course I'm presuming the "Type Mismatch" refers to i = 1 as defining the
data as an integer. Otherwise I've not seen this error before.
--
dhunter43
The Performance Advantage, LLC


"JLGWhiz" wrote:

Try this in the standard VBA module.

Sub cpy()
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
i = i + 1
Next
End Sub

"dhunter43" wrote:

In worksheet1 I have a range (a1:b12).
In worksheet2 I have 12 column headings (a1:l1) and I want to search
worksheet1 range a1:a12 for the corresponding column headings then populate
worksheet2(a2:l2) with the data from worksheet1 (b1:b12).
I was able to use the "IF" formula in worksheet2 until I expanded past the 7
nested functions rule. I've tried to use Lookup and Vlookup formulas but both
require sorting which is not an option.
I've also tried to use the IFELSE function and LOOKUP functions in VBA
without success.

I appreciate the assistance and enjoy the learnings that go into problem
solving.

Thanks,
dhunter43
The Performance Advantage, LLC

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Replacing "IF" or "Lookup" formulas with VBA function

It should have worked as long as there were no blank cells in the range.
Try this modified version and let me know if you still get the error.

Sub cpy()
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If Not c Is Nothing Then
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
End If
i = i + 1
Next

"dhunter43" wrote:

I'm getting a "Type Mismatch" error. Perhaps you need more info.
The column headings in worksheet2 text headings i.e. 14Sheeting, 15Printing
Of course I'm presuming the "Type Mismatch" refers to i = 1 as defining the
data as an integer. Otherwise I've not seen this error before.
--
dhunter43
The Performance Advantage, LLC


"JLGWhiz" wrote:

Try this in the standard VBA module.

Sub cpy()
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
i = i + 1
Next
End Sub

"dhunter43" wrote:

In worksheet1 I have a range (a1:b12).
In worksheet2 I have 12 column headings (a1:l1) and I want to search
worksheet1 range a1:a12 for the corresponding column headings then populate
worksheet2(a2:l2) with the data from worksheet1 (b1:b12).
I was able to use the "IF" formula in worksheet2 until I expanded past the 7
nested functions rule. I've tried to use Lookup and Vlookup formulas but both
require sorting which is not an option.
I've also tried to use the IFELSE function and LOOKUP functions in VBA
without success.

I appreciate the assistance and enjoy the learnings that go into problem
solving.

Thanks,
dhunter43
The Performance Advantage, LLC

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Replacing "IF" or "Lookup" formulas with VBA function

Just in case, this version defines i a little better.

Sub cpy()
Dim i As Long
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If Not c Is Nothing Then
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
End If
i = i + 1
Next
End Sub


"dhunter43" wrote:

I'm getting a "Type Mismatch" error. Perhaps you need more info.
The column headings in worksheet2 text headings i.e. 14Sheeting, 15Printing
Of course I'm presuming the "Type Mismatch" refers to i = 1 as defining the
data as an integer. Otherwise I've not seen this error before.
--
dhunter43
The Performance Advantage, LLC


"JLGWhiz" wrote:

Try this in the standard VBA module.

Sub cpy()
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
i = i + 1
Next
End Sub

"dhunter43" wrote:

In worksheet1 I have a range (a1:b12).
In worksheet2 I have 12 column headings (a1:l1) and I want to search
worksheet1 range a1:a12 for the corresponding column headings then populate
worksheet2(a2:l2) with the data from worksheet1 (b1:b12).
I was able to use the "IF" formula in worksheet2 until I expanded past the 7
nested functions rule. I've tried to use Lookup and Vlookup formulas but both
require sorting which is not an option.
I've also tried to use the IFELSE function and LOOKUP functions in VBA
without success.

I appreciate the assistance and enjoy the learnings that go into problem
solving.

Thanks,
dhunter43
The Performance Advantage, LLC



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 25
Default Replacing "IF" or "Lookup" formulas with VBA function

still having the same problem. I was probably too vague in my initial
request. Here are the specifics with actual worksheets and cell ranges
identified. Apologies if this caused the problem.

In my actual workbook 'worksheet1' is named InputForm and 'worksheet2 is
named Formulas.
Cells B14:b25 in the InputForm worksheet are drop down lists that deliver a
value in the corresponding cells c14:c25.
Cells M1:AC1 in the Formulas worksheet are the same as the drop down list in
the InputForm worksheet. I need to populate cells M2:AC2 with the data from
InputForm C14:c25 based on user selection.
90% of the time there will be several cells left blank in InputForm b14:c25
and I would like to return a "0" in cells Formulas("M2:AC2") if an operation
isn't selceted.

Thank you,
dhunter43
The Performance Advantage, LLC


"JLGWhiz" wrote:

Just in case, this version defines i a little better.

Sub cpy()
Dim i As Long
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If Not c Is Nothing Then
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
End If
i = i + 1
Next
End Sub


"dhunter43" wrote:

I'm getting a "Type Mismatch" error. Perhaps you need more info.
The column headings in worksheet2 text headings i.e. 14Sheeting, 15Printing
Of course I'm presuming the "Type Mismatch" refers to i = 1 as defining the
data as an integer. Otherwise I've not seen this error before.
--
dhunter43
The Performance Advantage, LLC


"JLGWhiz" wrote:

Try this in the standard VBA module.

Sub cpy()
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
i = i + 1
Next
End Sub

"dhunter43" wrote:

In worksheet1 I have a range (a1:b12).
In worksheet2 I have 12 column headings (a1:l1) and I want to search
worksheet1 range a1:a12 for the corresponding column headings then populate
worksheet2(a2:l2) with the data from worksheet1 (b1:b12).
I was able to use the "IF" formula in worksheet2 until I expanded past the 7
nested functions rule. I've tried to use Lookup and Vlookup formulas but both
require sorting which is not an option.
I've also tried to use the IFELSE function and LOOKUP functions in VBA
without success.

I appreciate the assistance and enjoy the learnings that go into problem
solving.

Thanks,
dhunter43
The Performance Advantage, LLC

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Replacing "IF" or "Lookup" formulas with VBA function

That explains the "type mismatch" error. I suggest you repost
with the following portion of your last posting. I would have to
do some research to help you here, but there are those who
are wiser than me that can help if you re-post.

In my actual workbook 'worksheet1' is named InputForm and 'worksheet2 is
named Formulas.
Cells B14:b25 in the InputForm worksheet are drop down lists that deliver a
value in the corresponding cells c14:c25.
Cells M1:AC1 in the Formulas worksheet are the same as the drop down list in
the InputForm worksheet. I need to populate cells M2:AC2 with the data from
InputForm C14:c25 based on user selection.
90% of the time there will be several cells left blank in InputForm b14:c25
and I would like to return a "0" in cells Formulas("M2:AC2") if an operation
isn't selceted.


"dhunter43" wrote:

still having the same problem. I was probably too vague in my initial
request. Here are the specifics with actual worksheets and cell ranges
identified. Apologies if this caused the problem.

In my actual workbook 'worksheet1' is named InputForm and 'worksheet2 is
named Formulas.
Cells B14:b25 in the InputForm worksheet are drop down lists that deliver a
value in the corresponding cells c14:c25.
Cells M1:AC1 in the Formulas worksheet are the same as the drop down list in
the InputForm worksheet. I need to populate cells M2:AC2 with the data from
InputForm C14:c25 based on user selection.
90% of the time there will be several cells left blank in InputForm b14:c25
and I would like to return a "0" in cells Formulas("M2:AC2") if an operation
isn't selceted.

Thank you,
dhunter43
The Performance Advantage, LLC


"JLGWhiz" wrote:

Just in case, this version defines i a little better.

Sub cpy()
Dim i As Long
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If Not c Is Nothing Then
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
End If
i = i + 1
Next
End Sub


"dhunter43" wrote:

I'm getting a "Type Mismatch" error. Perhaps you need more info.
The column headings in worksheet2 text headings i.e. 14Sheeting, 15Printing
Of course I'm presuming the "Type Mismatch" refers to i = 1 as defining the
data as an integer. Otherwise I've not seen this error before.
--
dhunter43
The Performance Advantage, LLC


"JLGWhiz" wrote:

Try this in the standard VBA module.

Sub cpy()
Set Sh1 = Worksheets(1)
Set sh2 = Worksheets(2)
i = 1
For Each c In sh2.Range("$A$1:$L$1")
If c = Sh1.Cells(i, 1) Then
Sh1.Cells(i, 1).Offset(0, 1).Copy c.Offset(1, 0)
End If
i = i + 1
Next
End Sub

"dhunter43" wrote:

In worksheet1 I have a range (a1:b12).
In worksheet2 I have 12 column headings (a1:l1) and I want to search
worksheet1 range a1:a12 for the corresponding column headings then populate
worksheet2(a2:l2) with the data from worksheet1 (b1:b12).
I was able to use the "IF" formula in worksheet2 until I expanded past the 7
nested functions rule. I've tried to use Lookup and Vlookup formulas but both
require sorting which is not an option.
I've also tried to use the IFELSE function and LOOKUP functions in VBA
without success.

I appreciate the assistance and enjoy the learnings that go into problem
solving.

Thanks,
dhunter43
The Performance Advantage, LLC

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Text "comparison" operator for "contains" used in an "IF" Function Pawaso Excel Worksheet Functions 4 April 4th 23 11:35 AM
Excel - Golf - how to display "-2" as "2 Under" or "4"as "+4" or "4 Over" in a calculation cell Steve Kay Excel Discussion (Misc queries) 2 August 8th 08 01:54 AM
change "true" and "false" to "availble" and "out of stock" inthestands Excel Worksheet Functions 2 July 19th 07 07:05 PM
HELP on "left","right","find","len","substitute" functions serene83 Excel Discussion (Misc queries) 5 June 27th 06 02:23 AM
Count occurences of "1"/"0" (or"TRUE"/"FALSE") in a row w. conditions in the next BCB New Users to Excel 7 May 13th 06 10:02 PM


All times are GMT +1. The time now is 12:05 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"