ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   replacing characters in a string (https://www.excelbanter.com/excel-programming/421974-replacing-characters-string.html)

Robert H

replacing characters in a string
 
In a data analysis worksheet I create named ranges for each data
column. The names are used in formulas, conbditional formating, charts
etc. To work around named range "name" limitations and how I want my
column headings to look I replace blank spaces with "_", name the
range and then replace "_" with blank spaces.
Note, the renaming is new I have been just living with underscores in
the headings.

Like so:
For Each C In Selection
cAdd = C.Address
cRng = Range(C.Offset(1, 0), C.End(xlDown)).Address

C.Value = Replace(C.Value, " ", "_") 'Make header text
safe for "NAMES"
ActiveSheet.Names.Add Name:=C.Value, RefersTo:="=" & "'" &
SheetName & "'" & "!" & cRng

C.Value = Replace(C.Value, "_", " ") 'restore blanks in
header text
Next

In a few instances the code searches through the headings for keywords
and the selects a named range based in the findings. Like so:

Set zNmRngA = Cells.Find(what:="IMP", _
After:=ActiveCell, _
LookIn:=xlValues, _
lookat:=xlPart, _
searchorder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)

in this case the first column found has the heading "IMP 100 Hz" when
it tries to match it to a name one is not found because the
corresponding name is "IMP_100_Hz"

is it possible to modify zNmRngA after it is set to find and replace
the blanks with "_"?


I know this is a goofy setup but it has evolved over the years and Im
just trying to clean up the presentation.

Rick Rothstein

replacing characters in a string
 
First off... you don't have to change the value of the cell just to use its
value in another assignment statement. This code should create the Named
Ranges for you...

For Each C In Selection
cAdd = C.Address
cRng = Range(C.Offset(1, 0), C.End(xlDown)).Address
ActiveSheet.Names.Add Name:=Replace(C.Value, " ", "_"), _
RefersTo:="=" & "'" & SheetName & _
"'" & "!" & cRng
Next

As for your "Find" question... don't search the cells... search the Names
collection instead.

For Each N In Names
If UCase(N.Name) Like "*IMP*" Then
Set zNmRngA = N.RefersToRange
Exit For
End If
Next

Note: The text being searched for must all be in upper case letters between
the asterisks in the If..Then statement.

--
Rick (MVP - Excel)


"Robert H" wrote in message
...
In a data analysis worksheet I create named ranges for each data
column. The names are used in formulas, conbditional formating, charts
etc. To work around named range "name" limitations and how I want my
column headings to look I replace blank spaces with "_", name the
range and then replace "_" with blank spaces.
Note, the renaming is new I have been just living with underscores in
the headings.

Like so:
For Each C In Selection
cAdd = C.Address
cRng = Range(C.Offset(1, 0), C.End(xlDown)).Address

C.Value = Replace(C.Value, " ", "_") 'Make header text
safe for "NAMES"
ActiveSheet.Names.Add Name:=C.Value, RefersTo:="=" & "'" &
SheetName & "'" & "!" & cRng

C.Value = Replace(C.Value, "_", " ") 'restore blanks in
header text
Next

In a few instances the code searches through the headings for keywords
and the selects a named range based in the findings. Like so:

Set zNmRngA = Cells.Find(what:="IMP", _
After:=ActiveCell, _
LookIn:=xlValues, _
lookat:=xlPart, _
searchorder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)

in this case the first column found has the heading "IMP 100 Hz" when
it tries to match it to a name one is not found because the
corresponding name is "IMP_100_Hz"

is it possible to modify zNmRngA after it is set to find and replace
the blanks with "_"?


I know this is a goofy setup but it has evolved over the years and Im
just trying to clean up the presentation.



joel

replacing characters in a string
 
zNmRngA is a range just like C is a range object.

So instead of

C.Value = Replace(C.Value, " ", "_") 'Make header text

Use

zNmRngA.Value = Replace(zNmRngA.Value, " ", "_") 'Make header text


"Robert H" wrote:

In a data analysis worksheet I create named ranges for each data
column. The names are used in formulas, conbditional formating, charts
etc. To work around named range "name" limitations and how I want my
column headings to look I replace blank spaces with "_", name the
range and then replace "_" with blank spaces.
Note, the renaming is new I have been just living with underscores in
the headings.

Like so:
For Each C In Selection
cAdd = C.Address
cRng = Range(C.Offset(1, 0), C.End(xlDown)).Address

C.Value = Replace(C.Value, " ", "_") 'Make header text
safe for "NAMES"
ActiveSheet.Names.Add Name:=C.Value, RefersTo:="=" & "'" &
SheetName & "'" & "!" & cRng

C.Value = Replace(C.Value, "_", " ") 'restore blanks in
header text
Next

In a few instances the code searches through the headings for keywords
and the selects a named range based in the findings. Like so:

Set zNmRngA = Cells.Find(what:="IMP", _
After:=ActiveCell, _
LookIn:=xlValues, _
lookat:=xlPart, _
searchorder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)

in this case the first column found has the heading "IMP 100 Hz" when
it tries to match it to a name one is not found because the
corresponding name is "IMP_100_Hz"

is it possible to modify zNmRngA after it is set to find and replace
the blanks with "_"?


I know this is a goofy setup but it has evolved over the years and Im
just trying to clean up the presentation.


Robert H

replacing characters in a string
 
Rick I was able to make both of those examples work in my
application. Both are much cleaner (efficient) ways to do what I was
doing, especialy the creating the names. I cant believe i was doing
that the "long way"...
Muchos Gracias!
Robert

On Jan 5, 12:18*pm, "Rick Rothstein"
wrote:
First off... you don't have to change the value of the cell just to use its
value in another assignment statement. This code should create the Named
Ranges for you...

* For Each C In Selection
* * cAdd = C.Address
* * cRng = Range(C.Offset(1, 0), C.End(xlDown)).Address
* * ActiveSheet.Names.Add Name:=Replace(C.Value, " ", "_"), _
* * * * * * * * * * * * * RefersTo:="=" & "'" & SheetName & _
* * * * * * * * * * * * * * * * * * "'" & "!" & cRng
* Next

As for your "Find" question... don't search the cells... search the Names
collection instead.

* For Each N In Names
* * If UCase(N.Name) Like "*IMP*" Then
* * * Set zNmRngA = N.RefersToRange
* * * Exit For
* * End If
* Next

Note: The text being searched for must all be in upper case letters between
the asterisks in the If..Then statement.

--
Rick (MVP - Excel)

"Robert H" wrote in message

...



In a data analysis worksheet I create named ranges for each data
column. The names are used in formulas, conbditional formating, charts
etc. *To work around named range "name" limitations and how I want my
column headings to look I replace blank spaces with "_", name the
range and then replace "_" with blank spaces.
Note, the renaming is new I have been just living with underscores in
the headings.


Like so:
* *For Each C In Selection
* * * *cAdd = C.Address
* * * *cRng = Range(C.Offset(1, 0), C.End(xlDown)).Address


* * * * * *C.Value = Replace(C.Value, " ", "_") *'Make header text
safe for "NAMES"
* * * *ActiveSheet.Names.Add Name:=C.Value, RefersTo:="=" & "'" &
SheetName & "'" & "!" & cRng


* * * * * *C.Value = Replace(C.Value, "_", " ") * 'restore blanks in
header text
* *Next


In a few instances the code searches through the headings for keywords
and the selects a named range based in the findings. *Like so:


* * * Set zNmRngA = Cells.Find(what:="IMP", _
* * * * * * * * After:=ActiveCell, _
* * * * * * * * LookIn:=xlValues, _
* * * * * * * * lookat:=xlPart, _
* * * * * * * * searchorder:=xlByColumns, _
* * * * * * * * SearchDirection:=xlNext, _
* * * * * * * * MatchCase:=False, _
* * * * * * * * SearchFormat:=False)


in this case the first column found has the heading "IMP 100 Hz" when
it tries to match it to a name one is not found because the
corresponding name is "IMP_100_Hz"


is it possible to modify zNmRngA after it is set to find and replace
the blanks with "_"?


I know this is a goofy setup but it has evolved over the years and Im
just trying to clean up the presentation.- Hide quoted text -


- Show quoted text -




All times are GMT +1. The time now is 12:34 PM.

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