Kamis, 10 Januari 2013

Re : [ExcelVBA] Re: convert text to numbers with For Each xCell

 

  Hello ,

  
  Some time it' s help   but you certainely did it first :

    -  rather recording a simple macro
        to read the HowExcelDo ...

     a )  Selecting  correspondant  ROW or Column or ... what else
 
     b)  then change casting the field ( tesxt to number )
          simply with the approriate Icon Menu  ;)

     c)  Stop recording

     d )  analyzing  the result

      e )   
             1  OK  yeah  !!!
            
            2    KO 

      f )   Trying Trying Trying  :  at last you 'll succed ...

 
     Happy developping new year
      to all  [ExcelVBA] members,
 

 @++SC

 

--- En date de : Jeu 10.1.13, Manny mgarza@fellowes.com> a écrit :

De: Manny mgarza@fellowes.com>
Objet: [ExcelVBA] Re: convert text to numbers with For Each xCell
À: ExcelVBA@yahoogroups.com
Date: Jeudi 10 janvier 2013, 16h40

 

Thanks Paul, that was a cool excercise and now I do know a little more about nothing ;-)

I have not yet come across a situation where I might need to compare cell values with a null string character but this is good to know for future reference.

I mostly use my spreadsheets to do Vlookup and correct me if I'm wrong but text strings return an invalid value when being called on in Vlookup. Thus I am always converting my values into number (I'm guessing our database stores a lot of fields as string values instead of numerical because they want it to be an alphanumeric field when really it's used as numerical 99% of the time, but I digress).

By the way is text string the same as string? Everything gets so literal in programmming so I'm just curious to know if there is more than 1 type of string as far as computers are concerned.

Thanks and have a good one!

--- In ExcelVBA@yahoogroups.com, Paul Schreiner wrote:

>

> The fact that the "X" is in quotes, means that it is taken literally.

> just about any time you see something in quotes, it means that what is in

> between the quotes is a text string.

>

> Normally (unless you're an experinced programmer), when you see an "equate"

> expression:

>

> if (x = y)

> then your mind interprets this to mean "is x EQUAL TO y"

> but to a computer, it's actually much more than that.

> Intellectually, 123 is the same as "123"

> but to a computer, it is not.  One is a numeric value and one is a text string.

> the same thing applies to the test: if () = ""

> Intellectually, you see nothing between the ( ), and nothing between the quotes,

> but to a computer () is nothing, but "" is a null string.. which isn't rally the

> same thing!

>

> I know, it's complicated and confusing.

> Since I don't know HOW your sheet is created, I made some assumptions.

>

> What I've encountered before is that depending on HOW the values get put into

> excel, even though a cell may LOOK empty (or blank), there MAY actually be a

> null string there!

> ------------------------------------

> Try this experiment:

> in Cell A2 and B2, put =RANDBETWEEN(1,10)

> in Cell C2, put: =if(A2=B2,"",B2-A2)

> copy all 3 cells down 20 rows or so.

>

> Now hit F9 until you see some "blanks" in column C.

> Then select all your cells and Copy/Paste Special->Values.

>

> Select the first value in column C.

> "normally" you should be able to hit the "end" key and down arrow and it would

> move to the last non-blank cell before a blank cell.

> But instead, it moves to the last value!

>

> If you turn on your filters, and elect to show only "blanks", it will show these

> seemingly "empty" rows.

> Yet using the end-down keystrokes, it acts as if there's something there.

> Well, actually there is... "" is a null string character.

> ---------------------------------------

>  

> In the past, I've encountered cases where I've tested the value in a cell and

> compared it to ""

> and it said it DIDN'T match, even though I THOUGHT I was comparing it to a

> "blank".

>  

> So, to avoid this, I routinely takes steps to convert the value to a string by

> combining the value with a string value (in this case "X"), you could use

> xCell.Value & "Manny"

> and fulfill the same purpose, but require more keystrokes!

>  

> I then compare it to the simple string value (in this case "X")

> By converting the cellvalue to a string, any null/blank/nothing character gets

> dropped and I get:

>  

> IF ("X" = "X") 

>  

> hope this helps your understanding about nothing (/null/blank) ;o)

>

> Paul

> -----------------------------------------

> "Do all the good you can,

> By all the means you can,

> In all the ways you can,

> In all the places you can,

> At all the times you can,

> To all the people you can,

> As long as ever you can." - John Wesley

> -----------------------------------------

>

>

>

>

> ________________________________

> From: Manny

> To: ExcelVBA@yahoogroups.com

> Sent: Wed, January 9, 2013 9:41:38 AM

> Subject: [ExcelVBA] Re: convert text to numbers with For Each xCell

>

>  

> Paul,

> One last question, in your example below:

> If (xCell.Value & "X" <> "X") Then

> What does the "X" represent? Should I interpret the "X" literally or as a

> references to a variable? Keep in mind I am a novice VBA'er, I'm learning as I

> go.

>

> Thanks,

>

> --- In ExcelVBA@yahoogroups.com, Paul Schreiner wrote:

> >

> > I suspect then, that the value in the cell isn't really "blank".

> > It is probably either a "null" value, or a space..

> > which excel does sometimes, depending on how the values were generated.

> >

> > I have reports that process nearly 150,000 lines of data daily.

> > There have been times that I've encountered this in multiple records every day

>

> > for a week, then not again for the rest of the month.

> >

> > To get around it, I (almost always) use something like:

> >

> > If (xCell.Value & "X" <> "X") then

> >  

> > but

> > On Error Resume Next

> > works too.

> >

> > It's just that sometimes, the error is significant, and I want to know about

> >it.

> > For instance,

> > You're wanting to skip "blank" values.

> > What if the has an alpha character?

> > using On Error will simply skip over it instead of alerting you to the need to

>

> > correct a value.

> >

> > It really depends on what you're trying to accomplish, and the nature of your

> > data.

> >

> > good luck,

> >

> > Paul

> > -----------------------------------------

> > "Do all the good you can,

> > By all the means you can,

> > In all the ways you can,

> > In all the places you can,

> > At all the times you can,

> > To all the people you can,

> > As long as ever you can." - John Wesley

> > -----------------------------------------

> >

> >

> >

> >

> > ________________________________

> > From: Manny

> > To: ExcelVBA@yahoogroups.com

> > Sent: Mon, January 7, 2013 5:37:08 PM

> > Subject: [ExcelVBA] Re: convert text to numbers with For Each xCell

> >

> >  

> > Thanks Paul I tried your suggestion but got the same runtime error. It did

> >cycle

> >

> > through the first cell in Col D and returned a number but the blank cell in Col

> >

> > E caused the error again.

> >

> > --- In ExcelVBA@yahoogroups.com, Paul Schreiner wrote:

> > >

> > > Try using:

> > >

> > > For Each xCell In Selection

> > >  if (xCell.Value <> "") then xCell.Value = CDec(xCell.Value)

> > > Next xCell

> > >

> > >

> > >  

> > > Paul

> > > -----------------------------------------

> > > "Do all the good you can,

> > > By all the means you can,

> > > In all the ways you can,

> > > In all the places you can,

> > > At all the times you can,

> > > To all the people you can,

> > > As long as ever you can." - John Wesley

> > > -----------------------------------------

> > >

> > >

> > >

> > >

> > > ________________________________

> > > From: Manny

> > > To: ExcelVBA@yahoogroups.com

> > > Sent: Mon, January 7, 2013 1:09:07 PM

> > > Subject: [ExcelVBA] convert text to numbers with For Each xCell

> > >

> > >  

> > > Good day Wizards!

> > > Your assistance has been extremely valuable and now I seek your expertise

> >once

> >

> >

> > > again.

> > >

> > > I am using the following code after defining the Dim RVS as Long:

> > >

> > > RVS = Worksheets("Standard_1").Range("D2:E2").End(xlDown).Row

> > > Range("D2:E" & RVS&).Select

> > > For Each xCell In Selection

> > > xCell.Value = CDec(xCell.Value)

> > > Next xCell

> > >

> > > There is always a value in Col D but there are cells in Col E that will

> > > sometimes be blank. When the routine hits one of these blank cells I get:

> > > runtime error '13' Type mismatch.

> > > How do I get this code to ignore the blank cells in Col E and return either a

> >

> > > zero or nothing at all.

> > >

> > > If it makes any difference I am using Excel 2010 but the file is imported

> >into

> >

> >

> > > 2010 as file type Excel 2007. Previously this code worked fine when imported

> >as

> >

> > >

> > > file type Excel 97-2003 and if the cell in Col E was blank a zero was

> >returned

> >

> >

> > > and life was good.

> > >

> > > I have no choice on the file type to be imported as this is the result of IT

>

> > > changes in database report applications.

> > >

> > > Thanks,

> > >

> > >

> > >

> > >

> > > [Non-text portions of this message have been removed]

> > >

> >

> >

> >

> >

> > [Non-text portions of this message have been removed]

> >

>

>

>

>

> [Non-text portions of this message have been removed]

>

[Non-text portions of this message have been removed]

__._,_.___
Reply via web post Reply to sender Reply to group Start a New Topic Messages in this topic (11)
Recent Activity:
----------------------------------
Be sure to check out TechTrax Ezine for many, free Excel VBA articles! Go here: http://www.mousetrax.com/techtrax to enter the ezine, then search the ARCHIVES for EXCEL VBA.

----------------------------------
Visit our ExcelVBA group home page for more info and support files:
http://groups.yahoo.com/group/ExcelVBA

----------------------------------
More free tutorials and resources available at:
http://www.mousetrax.com

----------------------------------
.

__,_._,___

Tidak ada komentar:

Posting Komentar