ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Divide contents of cell (https://www.excelbanter.com/excel-programming/377252-divide-contents-cell.html)

C. Roy Blye

Divide contents of cell
 
Hi,

I would like to write a macro that divides the contents of one cell into two
separate cells.

For example: If a cell contains "cats & dogs", I would like to convert the
contents of the cell into two cells, one containing "cats" and the other
containing "dogs". (The quotes are not part of the actual contents.)

My feeble attempt to create a macro for this always results in "cats" and
"dogs", even when the original cell contains "horses & cows". In other
words, I need a macro that isn't so "literal".

As you may have guessed, my macro was created by recording it, rather than
writing it from scratch. (I admit to being a novice at this.)

I can see where the problem is in the code, but I don't know how to fix it.
For example, this line from the code:

Range("A2").Select
ActiveCell.FormulaR1C1 = "cats"

needs to say something like:

Range("A2").Select
ActiveCell.FormulaR1C1 = "string to left of & sign"

Thanks in advance for any help.

Roy

PS If there is a more appropriate newsgroup for this question, please let me
know.



Tom Ogilvy

Divide contents of cell
 
Assumes the divider as an Ampersand:

Sub EFG()
Dim s As String, s1 As String, s2 As String
Dim iloc As Long
s = ActiveCell.Value
iloc = InStr(1, s, "&", vbTextCompare)
If iloc < 0 Then
s1 = Trim(Left(s, iloc - 1))
s2 = Trim(Right(s, Len(s) - iloc))
ActiveCell.Offset(0, 1) = s1
ActiveCell.Offset(0, 2) = s2
Else
ActiveCell.Offset(0, 1).Value = s
End If
End Sub


--
Regards,
Tom Ogilvy




"C. Roy Blye" wrote in message
t...
Hi,

I would like to write a macro that divides the contents of one cell into
two separate cells.

For example: If a cell contains "cats & dogs", I would like to convert
the contents of the cell into two cells, one containing "cats" and the
other containing "dogs". (The quotes are not part of the actual contents.)

My feeble attempt to create a macro for this always results in "cats" and
"dogs", even when the original cell contains "horses & cows". In other
words, I need a macro that isn't so "literal".

As you may have guessed, my macro was created by recording it, rather than
writing it from scratch. (I admit to being a novice at this.)

I can see where the problem is in the code, but I don't know how to fix
it. For example, this line from the code:

Range("A2").Select
ActiveCell.FormulaR1C1 = "cats"

needs to say something like:

Range("A2").Select
ActiveCell.FormulaR1C1 = "string to left of & sign"

Thanks in advance for any help.

Roy

PS If there is a more appropriate newsgroup for this question, please let
me know.




Don Guillett

Divide contents of cell
 
You can use datatext to columns to divide and then delete the & column

or

Sub separatecell()
For Each c In Selection
x = InStr(c, "&")
c.Offset(, 1) = Right(c, Len(c) - x)
c.Value = Left(c, x - 2)
Next c
End Sub

--
Don Guillett
SalesAid Software

"C. Roy Blye" wrote in message
t...
Hi,

I would like to write a macro that divides the contents of one cell into
two separate cells.

For example: If a cell contains "cats & dogs", I would like to convert
the contents of the cell into two cells, one containing "cats" and the
other containing "dogs". (The quotes are not part of the actual contents.)

My feeble attempt to create a macro for this always results in "cats" and
"dogs", even when the original cell contains "horses & cows". In other
words, I need a macro that isn't so "literal".

As you may have guessed, my macro was created by recording it, rather than
writing it from scratch. (I admit to being a novice at this.)

I can see where the problem is in the code, but I don't know how to fix
it. For example, this line from the code:

Range("A2").Select
ActiveCell.FormulaR1C1 = "cats"

needs to say something like:

Range("A2").Select
ActiveCell.FormulaR1C1 = "string to left of & sign"

Thanks in advance for any help.

Roy

PS If there is a more appropriate newsgroup for this question, please let
me know.




Gary Keramidas

Divide contents of cell
 
here's another approach that may work. i assumed the data is in column A

Sub test()
Dim i As Long, lastrow As Long
Dim str As Variant
Dim cell As Range
i = 0
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For Each cell In Range("A1:A" & lastrow)
str = Split(cell.Value, "&")
cell.Offset(, 1) = Trim(str(i))
cell.Offset(, 2) = Trim(str(i + 1))
Next
End Sub


--


Gary


"C. Roy Blye" wrote in message
t...
Hi,

I would like to write a macro that divides the contents of one cell into two
separate cells.

For example: If a cell contains "cats & dogs", I would like to convert the
contents of the cell into two cells, one containing "cats" and the other
containing "dogs". (The quotes are not part of the actual contents.)

My feeble attempt to create a macro for this always results in "cats" and
"dogs", even when the original cell contains "horses & cows". In other words,
I need a macro that isn't so "literal".

As you may have guessed, my macro was created by recording it, rather than
writing it from scratch. (I admit to being a novice at this.)

I can see where the problem is in the code, but I don't know how to fix it.
For example, this line from the code:

Range("A2").Select
ActiveCell.FormulaR1C1 = "cats"

needs to say something like:

Range("A2").Select
ActiveCell.FormulaR1C1 = "string to left of & sign"

Thanks in advance for any help.

Roy

PS If there is a more appropriate newsgroup for this question, please let me
know.




C. Roy Blye

Divide contents of cell
 
Hi Tom,

It works! I'm very impressed! Wanna trade brains? :)

Thanks very much!
Roy

"Tom Ogilvy" wrote in message
...
Assumes the divider as an Ampersand:

Sub EFG()
Dim s As String, s1 As String, s2 As String
Dim iloc As Long
s = ActiveCell.Value
iloc = InStr(1, s, "&", vbTextCompare)
If iloc < 0 Then
s1 = Trim(Left(s, iloc - 1))
s2 = Trim(Right(s, Len(s) - iloc))
ActiveCell.Offset(0, 1) = s1
ActiveCell.Offset(0, 2) = s2
Else
ActiveCell.Offset(0, 1).Value = s
End If
End Sub


--
Regards,
Tom Ogilvy




"C. Roy Blye" wrote in message
t...
Hi,

I would like to write a macro that divides the contents of one cell into
two separate cells.

For example: If a cell contains "cats & dogs", I would like to convert
the contents of the cell into two cells, one containing "cats" and the
other containing "dogs". (The quotes are not part of the actual
contents.)

My feeble attempt to create a macro for this always results in "cats" and
"dogs", even when the original cell contains "horses & cows". In other
words, I need a macro that isn't so "literal".

As you may have guessed, my macro was created by recording it, rather
than writing it from scratch. (I admit to being a novice at this.)

I can see where the problem is in the code, but I don't know how to fix
it. For example, this line from the code:

Range("A2").Select
ActiveCell.FormulaR1C1 = "cats"

needs to say something like:

Range("A2").Select
ActiveCell.FormulaR1C1 = "string to left of & sign"

Thanks in advance for any help.

Roy

PS If there is a more appropriate newsgroup for this question, please let
me know.







C. Roy Blye

Divide contents of cell
 
Hi Don,

You're a genius! Just what I was looking for. Not that I will ever know what
you know, but can you recommend a source (book, website, etc.) to get me
started?

Thanks very much for your help!
Roy

PS I'm intrigued that your method and Tom's method (above) are so
different, but both work well. Is that what they mean when they say "There's
more than one way to skin a cat?"


"Don Guillett" wrote in message
...
You can use datatext to columns to divide and then delete the & column

or

Sub separatecell()
For Each c In Selection
x = InStr(c, "&")
c.Offset(, 1) = Right(c, Len(c) - x)
c.Value = Left(c, x - 2)
Next c
End Sub

--
Don Guillett
SalesAid Software

"C. Roy Blye" wrote in message
t...
Hi,

I would like to write a macro that divides the contents of one cell into
two separate cells.

For example: If a cell contains "cats & dogs", I would like to convert
the contents of the cell into two cells, one containing "cats" and the
other containing "dogs". (The quotes are not part of the actual
contents.)

My feeble attempt to create a macro for this always results in "cats" and
"dogs", even when the original cell contains "horses & cows". In other
words, I need a macro that isn't so "literal".

As you may have guessed, my macro was created by recording it, rather
than writing it from scratch. (I admit to being a novice at this.)

I can see where the problem is in the code, but I don't know how to fix
it. For example, this line from the code:

Range("A2").Select
ActiveCell.FormulaR1C1 = "cats"

needs to say something like:

Range("A2").Select
ActiveCell.FormulaR1C1 = "string to left of & sign"

Thanks in advance for any help.

Roy

PS If there is a more appropriate newsgroup for this question, please let
me know.







C. Roy Blye

Divide contents of cell
 
Hi Gary,

When I ran the macro, it gave me a "Run-time error '9': Subscript out of
range" error message.
I certainly appreciate your help, but please don't bust a neuron
troubleshooting your macro - the above two macros work very well and I can
use either of those.

Thanks,
Roy

"Gary Keramidas" <GKeramidasATmsn.com wrote in message
...
here's another approach that may work. i assumed the data is in column A

Sub test()
Dim i As Long, lastrow As Long
Dim str As Variant
Dim cell As Range
i = 0
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For Each cell In Range("A1:A" & lastrow)
str = Split(cell.Value, "&")
cell.Offset(, 1) = Trim(str(i))
cell.Offset(, 2) = Trim(str(i + 1))
Next
End Sub


--


Gary


"C. Roy Blye" wrote in message
t...
Hi,

I would like to write a macro that divides the contents of one cell into
two separate cells.

For example: If a cell contains "cats & dogs", I would like to convert
the contents of the cell into two cells, one containing "cats" and the
other containing "dogs". (The quotes are not part of the actual
contents.)

My feeble attempt to create a macro for this always results in "cats" and
"dogs", even when the original cell contains "horses & cows". In other
words, I need a macro that isn't so "literal".

As you may have guessed, my macro was created by recording it, rather
than writing it from scratch. (I admit to being a novice at this.)

I can see where the problem is in the code, but I don't know how to fix
it. For example, this line from the code:

Range("A2").Select
ActiveCell.FormulaR1C1 = "cats"

needs to say something like:

Range("A2").Select
ActiveCell.FormulaR1C1 = "string to left of & sign"

Thanks in advance for any help.

Roy

PS If there is a more appropriate newsgroup for this question, please let
me know.






Bob Phillips

Divide contents of cell
 
Probably because there are items withiout an &

Sub test()
Dim i As Long, lastrow As Long
Dim str As Variant
Dim cell As Range
i = 0
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For Each cell In Range("A1:A" & lastrow)
str = Split(cell.Value, "&")
cell.Offset(, 1) = Trim(str(i))
If LBound(str) < UBound(str) Then
cell.Offset(, 2) = Trim(str(i + 1))
End If
Next
End Sub



--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)

"C. Roy Blye" wrote in message
. ..
Hi Gary,

When I ran the macro, it gave me a "Run-time error '9': Subscript out of
range" error message.
I certainly appreciate your help, but please don't bust a neuron
troubleshooting your macro - the above two macros work very well and I can
use either of those.

Thanks,
Roy

"Gary Keramidas" <GKeramidasATmsn.com wrote in message
...
here's another approach that may work. i assumed the data is in column A

Sub test()
Dim i As Long, lastrow As Long
Dim str As Variant
Dim cell As Range
i = 0
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For Each cell In Range("A1:A" & lastrow)
str = Split(cell.Value, "&")
cell.Offset(, 1) = Trim(str(i))
cell.Offset(, 2) = Trim(str(i + 1))
Next
End Sub


--


Gary


"C. Roy Blye" wrote in message
t...
Hi,

I would like to write a macro that divides the contents of one cell

into
two separate cells.

For example: If a cell contains "cats & dogs", I would like to convert
the contents of the cell into two cells, one containing "cats" and the
other containing "dogs". (The quotes are not part of the actual
contents.)

My feeble attempt to create a macro for this always results in "cats"

and
"dogs", even when the original cell contains "horses & cows". In other
words, I need a macro that isn't so "literal".

As you may have guessed, my macro was created by recording it, rather
than writing it from scratch. (I admit to being a novice at this.)

I can see where the problem is in the code, but I don't know how to fix
it. For example, this line from the code:

Range("A2").Select
ActiveCell.FormulaR1C1 = "cats"

needs to say something like:

Range("A2").Select
ActiveCell.FormulaR1C1 = "string to left of & sign"

Thanks in advance for any help.

Roy

PS If there is a more appropriate newsgroup for this question, please

let
me know.








Gary Keramidas

Divide contents of cell
 
you probably had some blank cells and i didn't test for that

--


Gary


"C. Roy Blye" wrote in message
. ..
Hi Gary,

When I ran the macro, it gave me a "Run-time error '9': Subscript out of
range" error message.
I certainly appreciate your help, but please don't bust a neuron
troubleshooting your macro - the above two macros work very well and I can use
either of those.

Thanks,
Roy

"Gary Keramidas" <GKeramidasATmsn.com wrote in message
...
here's another approach that may work. i assumed the data is in column A

Sub test()
Dim i As Long, lastrow As Long
Dim str As Variant
Dim cell As Range
i = 0
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For Each cell In Range("A1:A" & lastrow)
str = Split(cell.Value, "&")
cell.Offset(, 1) = Trim(str(i))
cell.Offset(, 2) = Trim(str(i + 1))
Next
End Sub


--


Gary


"C. Roy Blye" wrote in message
t...
Hi,

I would like to write a macro that divides the contents of one cell into two
separate cells.

For example: If a cell contains "cats & dogs", I would like to convert the
contents of the cell into two cells, one containing "cats" and the other
containing "dogs". (The quotes are not part of the actual contents.)

My feeble attempt to create a macro for this always results in "cats" and
"dogs", even when the original cell contains "horses & cows". In other
words, I need a macro that isn't so "literal".

As you may have guessed, my macro was created by recording it, rather than
writing it from scratch. (I admit to being a novice at this.)

I can see where the problem is in the code, but I don't know how to fix it.
For example, this line from the code:

Range("A2").Select
ActiveCell.FormulaR1C1 = "cats"

needs to say something like:

Range("A2").Select
ActiveCell.FormulaR1C1 = "string to left of & sign"

Thanks in advance for any help.

Roy

PS If there is a more appropriate newsgroup for this question, please let me
know.









All times are GMT +1. The time now is 11:23 AM.

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