ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Multiplication based on CSV string (https://www.excelbanter.com/excel-programming/301268-multiplication-based-csv-string.html)

Darius Blaszijk

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



Dana DeLouis[_3_]

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




Darius Blaszijk

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






keepITcool

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








Darius Blaszijk

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









Tom Ogilvy

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





Darius Blaszijk

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







Dana DeLouis[_3_]

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











Dana DeLouis[_3_]

Multiplication based on CSV string
 
Oops! Never mind. I just now see Tom's post.

<snip

Dana



Darius Blaszijk

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






All times are GMT +1. The time now is 01:49 PM.

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