Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9
Default Multiplication based on CSV string

Hello,

I want to make a function in VBA that does the following for me.

The data passed to the function is CSV data in the form "1,3,4" and a Range
of cells from a sheet. The result that has to be given back is the
multiplication of cell number 1, 3, 4 (as the CSV data indicates).

I have two questions for you:

- First is there a standard function that does this?? Or is there something
that is similar?? (I can manipulate the CSV format to whatever I want)
- Second if not then is there a method to process a CSV string as desired?
(standard built in)

If both are answered with no I guess I will need to make a CSV processing
function myself.

The CSV data comes from a text file that is automatically read by another
function.

Anybody?

Kind regards, Darius Blaszijk


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 690
Default Multiplication based on CSV string

The following function returns 12.

Function Apply_Product(s As String)
On Error Resume Next
Apply_Product = Evaluate(Replace("Product(#)", "#", s))
End Function


Sub TestIt()
Debug.Print Apply_Product("1,3,4")
End Sub

HTH
Dana DeLouis


"Darius Blaszijk" wrote in message
.nl...
Hello,

I want to make a function in VBA that does the following for me.

The data passed to the function is CSV data in the form "1,3,4" and a

Range
of cells from a sheet. The result that has to be given back is the
multiplication of cell number 1, 3, 4 (as the CSV data indicates).

I have two questions for you:

- First is there a standard function that does this?? Or is there

something
that is similar?? (I can manipulate the CSV format to whatever I want)
- Second if not then is there a method to process a CSV string as desired?
(standard built in)

If both are answered with no I guess I will need to make a CSV processing
function myself.

The CSV data comes from a text file that is automatically read by another
function.

Anybody?

Kind regards, Darius Blaszijk



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9
Default Multiplication based on CSV string

Dana,

Sorry for not being too clear in my question. What I'm looking for is this:

CSV = "1,3,4"

On the sheet I have data like this A1 = 2, B1 = 4, C1 = 6, D1 = 8;

The funtion takes this range also as a parameter the type used is Range.

The result shoud be: 2 * 6 * 8 = 96.

Kind regards,

Darius

"Dana DeLouis" schreef in bericht
...
The following function returns 12.

Function Apply_Product(s As String)
On Error Resume Next
Apply_Product = Evaluate(Replace("Product(#)", "#", s))
End Function


Sub TestIt()
Debug.Print Apply_Product("1,3,4")
End Sub

HTH
Dana DeLouis


"Darius Blaszijk" wrote in message
.nl...
Hello,

I want to make a function in VBA that does the following for me.

The data passed to the function is CSV data in the form "1,3,4" and a

Range
of cells from a sheet. The result that has to be given back is the
multiplication of cell number 1, 3, 4 (as the CSV data indicates).

I have two questions for you:

- First is there a standard function that does this?? Or is there

something
that is similar?? (I can manipulate the CSV format to whatever I want)
- Second if not then is there a method to process a CSV string as

desired?
(standard built in)

If both are answered with no I guess I will need to make a CSV

processing
function myself.

The CSV data comes from a text file that is automatically read by

another
function.

Anybody?

Kind regards, Darius Blaszijk





  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,253
Default Multiplication based on CSV string

Darius .

just use dana's code to think for yourself.
" aha so it's this marvelous PRODUCT() worksheetfunction... "

let's try that in a cell

e1 =PRODUCT(a1:d1)

jeez... it worked.. and you dont need vba





keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"Darius Blaszijk" wrote:

Dana,

Sorry for not being too clear in my question. What I'm looking for is
this:

CSV = "1,3,4"

On the sheet I have data like this A1 = 2, B1 = 4, C1 = 6, D1 = 8;

The funtion takes this range also as a parameter the type used is
Range.

The result shoud be: 2 * 6 * 8 = 96.

Kind regards,

Darius

"Dana DeLouis" schreef in bericht
...
The following function returns 12.

Function Apply_Product(s As String)
On Error Resume Next
Apply_Product = Evaluate(Replace("Product(#)", "#", s))
End Function


Sub TestIt()
Debug.Print Apply_Product("1,3,4")
End Sub

HTH
Dana DeLouis


"Darius Blaszijk" wrote in message
.nl...
Hello,

I want to make a function in VBA that does the following for me.

The data passed to the function is CSV data in the form "1,3,4" and
a Range of cells from a sheet. The result that has to be given back
is the multiplication of cell number 1, 3, 4 (as the CSV data
indicates).

I have two questions for you:

- First is there a standard function that does this?? Or is there
something that is similar?? (I can manipulate the CSV format to
whatever I want) - Second if not then is there a method to process
a CSV string as desired? (standard built in)

If both are answered with no I guess I will need to make a CSV
processing function myself.

The CSV data comes from a text file that is automatically read by
another function.

Anybody?

Kind regards, Darius Blaszijk







  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9
Default Multiplication based on CSV string

keep ITcool,

It's still not what I mean ... I think.

From a1 to d1 I have the values 2,4,6,8 so cell nr 1 is 2 and cell nr 4 is
8.
I have a sting tha say's 2,2,3. This means that cell nr 2 and cell nr 2 and
cell nr 3 have to be multiplied with themselves and returned as a value.

So in this case it would mean the result value is : 4 * 4 * 6 = 96.

For the CSV value; I don't know in advance the number of parameters. It can
be 3 it can be 10. Also the order in which the values (cell numbers) are in
is not predictable.

Hope this helps.

Kind regards, Darius Blaszijk

"keepITcool" schreef in bericht
...
Darius .

just use dana's code to think for yourself.
" aha so it's this marvelous PRODUCT() worksheetfunction... "

let's try that in a cell

e1 =PRODUCT(a1:d1)

jeez... it worked.. and you dont need vba





keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"Darius Blaszijk" wrote:

Dana,

Sorry for not being too clear in my question. What I'm looking for is
this:

CSV = "1,3,4"

On the sheet I have data like this A1 = 2, B1 = 4, C1 = 6, D1 = 8;

The funtion takes this range also as a parameter the type used is
Range.

The result shoud be: 2 * 6 * 8 = 96.

Kind regards,

Darius

"Dana DeLouis" schreef in bericht
...
The following function returns 12.

Function Apply_Product(s As String)
On Error Resume Next
Apply_Product = Evaluate(Replace("Product(#)", "#", s))
End Function


Sub TestIt()
Debug.Print Apply_Product("1,3,4")
End Sub

HTH
Dana DeLouis


"Darius Blaszijk" wrote in message
.nl...
Hello,

I want to make a function in VBA that does the following for me.

The data passed to the function is CSV data in the form "1,3,4" and
a Range of cells from a sheet. The result that has to be given back
is the multiplication of cell number 1, 3, 4 (as the CSV data
indicates).

I have two questions for you:

- First is there a standard function that does this?? Or is there
something that is similar?? (I can manipulate the CSV format to
whatever I want) - Second if not then is there a method to process
a CSV string as desired? (standard built in)

If both are answered with no I guess I will need to make a CSV
processing function myself.

The CSV data comes from a text file that is automatically read by
another function.

Anybody?

Kind regards, Darius Blaszijk










  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Multiplication based on CSV string

You mean you would have a function that takes arguments such as

SomeFunction(A1:A10,"1,3,4")

and you want
A1*A3*A4

(the multiplication actually performed)

If you have Excel 2000 or later

Public Function SomeFunction(rng As Range, sStr As String)
Dim varr, ans
Dim i As Long
varr = Split(sStr, ",")
ans = 1
For i = LBound(varr) To UBound(varr)
Next
If rng.Columns.Count 1 And rng.Rows.Count 1 _
Or rng.Areas.Count 1 Then
ans = "Invalid range"
Exit Function
ElseIf rng.Columns.Count 1 Then
For i = LBound(varr) To UBound(varr)
ans = ans * rng.Offset(0, varr(i) - 1)(1).Value
Next i
ElseIf rng.Rows.Count 1 Then
For i = LBound(varr) To UBound(varr)
ans = ans * rng(varr(i), 1).Value
Next
Else
ans = rng(1).Value
End If
SomeFunction = ans
End Function

usage
in worksheet:
=SomeFunction(A5:A10,"1,3,4")

in VBA
Sub AAAA()
Dim sStr As String
Dim rng As Range
sStr = "1,3,4"
Set rng = Range("A5:A10")
Debug.Print SomeFunction(rng, sStr)
End Sub


would get you started. It has very little error checking, so you would need
to add that. I have limited it to a contiguous range of cells that are
either one row tall or 1 column wide.

--
Regards,
Tom Ogilvy




"Darius Blaszijk" wrote in message
.nl...
Hello,

I want to make a function in VBA that does the following for me.

The data passed to the function is CSV data in the form "1,3,4" and a

Range
of cells from a sheet. The result that has to be given back is the
multiplication of cell number 1, 3, 4 (as the CSV data indicates).

I have two questions for you:

- First is there a standard function that does this?? Or is there

something
that is similar?? (I can manipulate the CSV format to whatever I want)
- Second if not then is there a method to process a CSV string as desired?
(standard built in)

If both are answered with no I guess I will need to make a CSV processing
function myself.

The CSV data comes from a text file that is automatically read by another
function.

Anybody?

Kind regards, Darius Blaszijk




  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9
Default Multiplication based on CSV string

Tom,

Exactly what I needed,

thanks alot

Darius Blaszijk

"Tom Ogilvy" schreef in bericht
...
You mean you would have a function that takes arguments such as

SomeFunction(A1:A10,"1,3,4")

and you want
A1*A3*A4

(the multiplication actually performed)

If you have Excel 2000 or later

Public Function SomeFunction(rng As Range, sStr As String)
Dim varr, ans
Dim i As Long
varr = Split(sStr, ",")
ans = 1
For i = LBound(varr) To UBound(varr)
Next
If rng.Columns.Count 1 And rng.Rows.Count 1 _
Or rng.Areas.Count 1 Then
ans = "Invalid range"
Exit Function
ElseIf rng.Columns.Count 1 Then
For i = LBound(varr) To UBound(varr)
ans = ans * rng.Offset(0, varr(i) - 1)(1).Value
Next i
ElseIf rng.Rows.Count 1 Then
For i = LBound(varr) To UBound(varr)
ans = ans * rng(varr(i), 1).Value
Next
Else
ans = rng(1).Value
End If
SomeFunction = ans
End Function

usage
in worksheet:
=SomeFunction(A5:A10,"1,3,4")

in VBA
Sub AAAA()
Dim sStr As String
Dim rng As Range
sStr = "1,3,4"
Set rng = Range("A5:A10")
Debug.Print SomeFunction(rng, sStr)
End Sub


would get you started. It has very little error checking, so you would

need
to add that. I have limited it to a contiguous range of cells that are
either one row tall or 1 column wide.

--
Regards,
Tom Ogilvy




"Darius Blaszijk" wrote in message
.nl...
Hello,

I want to make a function in VBA that does the following for me.

The data passed to the function is CSV data in the form "1,3,4" and a

Range
of cells from a sheet. The result that has to be given back is the
multiplication of cell number 1, 3, 4 (as the CSV data indicates).

I have two questions for you:

- First is there a standard function that does this?? Or is there

something
that is similar?? (I can manipulate the CSV format to whatever I want)
- Second if not then is there a method to process a CSV string as

desired?
(standard built in)

If both are answered with no I guess I will need to make a CSV

processing
function myself.

The CSV data comes from a text file that is automatically read by

another
function.

Anybody?

Kind regards, Darius Blaszijk






  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 690
Default Multiplication based on CSV string

Not sure, but would this work? It returned 96.

Function MyProduct(s As String, rng As Range) As Double
Dim v
Dim j As Long
Dim Ans As Double
Ans = 1
v = Split(s, ",")
On Error Resume Next
For j = LBound(v) To UBound(v)
Ans = Ans * rng(v(j))
Next
MyProduct = Ans
End Function


Sub TestIt()
'Set up
[A1:D1].Formula = "=2*Column()" ' 2,4,6,8

Debug.Print MyProduct("2,2,3", Range("A1:D1"))
End Sub

HTH
Dana DeLouis


"Darius Blaszijk" wrote in message
.nl...
keep ITcool,

It's still not what I mean ... I think.

From a1 to d1 I have the values 2,4,6,8 so cell nr 1 is 2 and cell nr 4 is
8.
I have a sting tha say's 2,2,3. This means that cell nr 2 and cell nr 2

and
cell nr 3 have to be multiplied with themselves and returned as a value.

So in this case it would mean the result value is : 4 * 4 * 6 = 96.

For the CSV value; I don't know in advance the number of parameters. It

can
be 3 it can be 10. Also the order in which the values (cell numbers) are

in
is not predictable.

Hope this helps.

Kind regards, Darius Blaszijk

"keepITcool" schreef in bericht
...
Darius .

just use dana's code to think for yourself.
" aha so it's this marvelous PRODUCT() worksheetfunction... "

let's try that in a cell

e1 =PRODUCT(a1:d1)

jeez... it worked.. and you dont need vba





keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"Darius Blaszijk" wrote:

Dana,

Sorry for not being too clear in my question. What I'm looking for is
this:

CSV = "1,3,4"

On the sheet I have data like this A1 = 2, B1 = 4, C1 = 6, D1 = 8;

The funtion takes this range also as a parameter the type used is
Range.

The result shoud be: 2 * 6 * 8 = 96.

Kind regards,

Darius

"Dana DeLouis" schreef in bericht
...
The following function returns 12.

Function Apply_Product(s As String)
On Error Resume Next
Apply_Product = Evaluate(Replace("Product(#)", "#", s))
End Function


Sub TestIt()
Debug.Print Apply_Product("1,3,4")
End Sub

HTH
Dana DeLouis


"Darius Blaszijk" wrote in message
.nl...
Hello,

I want to make a function in VBA that does the following for me.

The data passed to the function is CSV data in the form "1,3,4" and
a Range of cells from a sheet. The result that has to be given back
is the multiplication of cell number 1, 3, 4 (as the CSV data
indicates).

I have two questions for you:

- First is there a standard function that does this?? Or is there
something that is similar?? (I can manipulate the CSV format to
whatever I want) - Second if not then is there a method to process
a CSV string as desired? (standard built in)

If both are answered with no I guess I will need to make a CSV
processing function myself.

The CSV data comes from a text file that is automatically read by
another function.

Anybody?

Kind regards, Darius Blaszijk










  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 690
Default Multiplication based on CSV string

Oops! Never mind. I just now see Tom's post.

<snip

Dana


  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9
Default Multiplication based on CSV string

Indeed Tom sugested the same sollution. Split was what I was looking for.

Thank you for helping.

Kind regards, Darius Blaszijk

"Dana DeLouis" schreef in bericht
...
Oops! Never mind. I just now see Tom's post.

<snip

Dana




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
Count based on string in cell jmaj Excel Worksheet Functions 2 December 3rd 09 06:04 AM
Conditional Format based on sub-string BaseballFan Excel Discussion (Misc queries) 3 April 4th 09 10:04 PM
split string based on a SET of words [email protected] Excel Discussion (Misc queries) 8 August 3rd 07 03:09 AM
Open Books with VBA based on certain string [email protected] Excel Discussion (Misc queries) 3 September 6th 06 11:35 PM
Extract String based on condition Send Object Command - Two attachments Excel Discussion (Misc queries) 4 November 1st 05 09:06 PM


All times are GMT +1. The time now is 03:35 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"