![]() |
| If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|||||||
|
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
We are Maintaining cost in English Letters, Kindly Help to get COST on Coloumn2
Examples, A : 1 B : 2 C : 3 D : 4 F : 5 If I Entered 242 on Coloumn1 Need Automatic Shown BDB on Coloumn2 |
| Ads |
|
#2
|
|||
|
|||
|
On 29/06/2012 10:53 PM, Moideen wrote:
> We are Maintaining cost in English Letters, Kindly Help to get COST on > Coloumn2 > > Examples, > > A : 1 > B : 2 > C : 3 > D : 4 > F : 5 > > If I Entered 242 on Coloumn1 Need Automatic Shown BDB on Coloumn2 > > > > Well I don't quiet follow what you mean by COST on Column 2 as your end statement, you are asking for "BDB" to be shown if 242 is entered into the adjacent cell in Column 1 FWIW: if A2 is the active cell, then in B2 this: =IF($A2=242,"BDB","") Copy down as required.. HTH Mick. |
|
#3
|
|||
|
|||
|
Moideen wrote:
> We are Maintaining cost in English Letters, Kindly Help to get COST on > Coloumn2 > > Examples, > > A : 1 > B : 2 > C : 3 > D : 4 > F : 5 > > If I Entered 242 on Coloumn1 Need Automatic Shown BDB on Coloumn2 Put this in the sheet's object in the VBA editor: Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range, outP As String, costs As Variant costs = Array("#", "A", "B", "C", "D", "F", "#", "#", "#", "#") For Each cell In Target If cell.Column = 1 Then outP = "" c = Abs(Val(cell.Value)) Do While c > 0 n = c Mod 10 c = c \ 10 outP = costs(n) & outP Loop Me.Cells(cell.Row, cell.Column + 1).Value = outP End If Next End Sub Edit the 'costs' array to fit. (The hashes are there to indicate data entry errors. If you don't want them, don't delete them -- change them to "".) If this is meant to apply to the entire workbook, put this in the ThisWorkbook object instead: Private Sub Workbook_SheetChange(ByVal Sh As Object, _ ByVal Target As Range) Dim cell As Range, outP As String, costs As Variant costs = Array("#", "A", "B", "C", "D", "F", "#", "#", "#", "#") For Each cell In Target If cell.Column = 1 Then outP = "" c = Abs(Val(cell.Value)) Do While c > 0 n = c Mod 10 c = c \ 10 outP = costs(n) & outP Loop Sh.Cells(cell.Row, cell.Column + 1).Value = outP End If Next End Sub -- Money and faith are powerful motivators. |
|
#4
|
|||
|
|||
|
Quote:
Thank you very much, This function working is smoothly but one problem, If i entered 12.3 , Need Letter : AB.C or AB/C Please Help me. |
|
#5
|
|||
|
|||
|
Moideen wrote:
> Auric__ Wrote: >> Moideen wrote: >> - >> > We are Maintaining cost in English Letters, Kindly Help to get COST >> > on Coloumn2 >> > >> > Examples, >> > >> > A : 1 >> > B : 2 >> > C : 3 >> > D : 4 >> > F : 5 >> > >> > If I Entered 242 on Coloumn1 Need Automatic Shown BDB on Coloumn2- >> >> Put this in the sheet's object in the VBA editor: [snip] >> Edit the 'costs' array to fit. (The hashes are there to indicate data >> entry errors. If you don't want them, don't delete them -- change them >> to "".) >> >> If this is meant to apply to the entire workbook, put this in the >> ThisWorkbook object instead: [snip] > Thank you very much, This function working is smoothly but one problem, > If i entered 12.3 , Need Letter : AB.C or AB/C Please Help me. I looked through the functions, and found the SUBSTITUTE spreadsheet function. It should be faster than my code, and should also be easier to understand. Paste this into B1 and then copy down (one line, watch the word wrap): =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBST ITUTE (A1,1,"A"),2,"B"),3,"C"),4,"D"),5,"F") This can be extended by adding on more levels of SUBSTITUTE if necessary. If you'd rather stick with VBA, this works similarly: Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target If cell.Column = 1 Then cell.Offset(0, 1).Value = Replace(Replace( _ Replace(Replace(Replace(cell.Value, 1, "A"), 2, "B"), 3, "C"), _ 4, "D"), 5, "F") Next End Sub (Forget about what I posted before. Wasted effort on my part, mostly.) -- I don't believe in *lots* of invisible things that are supposed to make me happy. |
|
#6
|
|||
|
|||
|
Quote:
|
|
#7
|
|||
|
|||
|
Dear Auric,
I Tried with the below mentioned VBA code "0" not showing. Eg : 1.550 , Shown only : A.FF, To be Shown : A.FFS Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target If cell.Column = 1 Then cell.Offset(0, 1).Value = Replace(Replace( _ Replace(Replace(Replace(cell.Value, 1, "A"), 2, "B"), 3, "C"), _ 4, "D"), 5, "F"), 0, "S") Next End Sub |
|
#8
|
|||
|
|||
|
On Mon, 2 Jul 2012 14:49:01 +0000, Moideen > wrote:
>Dear Auric, > >I Tried with the below mentioned VBA code "0" not showing. > >Eg : 1.550 , Shown only : A.FF, To be Shown : A.FFS That makes perfect sense, given the specifications you have provided. ================ A : 1 B : 2 C : 3 D : 4 F : 5 ================================ It seems that you have only provided letter values for the numerals 1 to 5. And in a later post you indicated that you wanted the decimal (.) to be preserved. Why would you expect any other numerals to be taken into account? If you provide incomplete specifications, you should not be surprised that the results do not take into account requirements that you do not specify. I would suggest that, if there are other digits that you want to convert to letters, you include ALL of them in a single post. |
|
#9
|
|||
|
|||
|
Moideen wrote:
> I Tried with the below mentioned VBA code "0" not showing. > > Eg : 1.550 , Shown only : A.FF, To be Shown : A.FFS > > Private Sub Worksheet_Change(ByVal Target As Range) > For Each cell In Target > If cell.Column = 1 Then cell.Offset(0, 1).Value = Replace(Replace( _ > Replace(Replace(Replace(cell.Value, 1, "A"), 2, "B"), 3, "C"), _ > 4, "D"), 5, "F"), 0, "S") > Next > End Sub As I said before, you can extend the function by adding more levels of SUBSTITUTE or Replace as necessary -- meaning you need to *actually add another copy of the keyword*, not just the info to be replaced: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBST ITUTE(SUBSTITUTE (A1,1,"A"),2,"B"),3,"C"),4,"D"),5,"F"),0,"S") If cell.Column = 1 Then cell.Offset(0, 1).Value = Replace(Replace( _ Replace(Replace(Replace(Replace(cell.Value, 1, "A"), 2, "B"), _ 3, "C"), 4, "D"), 5, "F"), 0, "S") If you need a seventh replacement, you need a seventh SUBSTITUTE/Replace... but this is going to get unwieldy pretty fast, especially if you're replacing *every* digit with a letter. If you have more than this, you should go back to looking the digits up in an array, similar (but not identical) to my first reply. -- Here is an idea for you geniuses: Point your weapons at the bugs and shoot. If they die, the guns work. If not, grab a brick. |
|
#10
|
|||
|
|||
|
Quote:
We Need Always 3 Digits.This function only comming 2 Digits, Pls Advice me on this matter. Eg: 1.550 , Shown only : A.FF, To be Shown : A.FFS =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBST ITUTE(SUBSTITUTE (A1,1,"A"),2,"B"),3,"C"),4,"D"),5,"F"),0,"S") |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Auto alphabetic | [email protected] | Excel Worksheet Functions | 1 | November 27th 07 04:30 PM |
| HIghest Value - Numeric and Alphabetic | De-coi via OfficeKB.com | Excel Worksheet Functions | 2 | December 7th 06 12:01 PM |
| how can I set up an alphabetic sequence? | JackLWinans | Excel Discussion (Misc queries) | 2 | May 1st 06 06:25 PM |
| Alphabetic autofill | dogisnuts | Excel Discussion (Misc queries) | 3 | June 17th 05 03:16 AM |
| alphabetic order | adm1 | Excel Programming | 0 | December 18th 03 09:26 PM |