Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
change cellvalue based on value in adjacent cell
In my account data i have amount in column h and Debit, Credit (DR/
CR) in next column. To modify the values in column h the code is ........ For Each c In Range("H2:h" & t) If c.Offset(0, 1) = "DR" Then c.Value = c Else c.Value = -c End If Next ........ This part of macro takes abnormally high time. Please suggest any alternative to make this faster. |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
change cellvalue based on value in adjacent cell
How many rows? One quick thing - you don't need both if conditions. The first one does nothing. Try this instead: for each c in range("H2:h" & t) if c.offset(0,1).value = "CR" then c.value = -c.value next c Sam "Sane" wrote: In my account data i have amount in column h and Debit, Credit (DR/ CR) in next column. To modify the values in column h the code is ........ For Each c In Range("H2:h" & t) If c.Offset(0, 1) = "DR" Then c.Value = c Else c.Value = -c End If Next ........ This part of macro takes abnormally high time. Please suggest any alternative to make this faster. . |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
change cellvalue based on value in adjacent cell
Another thing that may help, put this at the start of the macro:
application.Calculation = xlCalculationManual and this at the end: application.Calculation = xlCalculationAutomatic "Sane" wrote: In my account data i have amount in column h and Debit, Credit (DR/ CR) in next column. To modify the values in column h the code is ........ For Each c In Range("H2:h" & t) If c.Offset(0, 1) = "DR" Then c.Value = c Else c.Value = -c End If Next ........ This part of macro takes abnormally high time. Please suggest any alternative to make this faster. . |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
change cellvalue based on value in adjacent cell
"Sane" je napisao u poruci interesnoj
... In my account data i have amount in column h and Debit, Credit (DR/ CR) in next column. To modify the values in column h the code is ....... For Each c In Range("H2:h" & t) If c.Offset(0, 1) = "DR" Then c.Value = c Else c.Value = -c End If Next it is not a good idea to use "c.value=-c", because it just *inverts* the value, called [mistakenly] twice, you have reverted to original value. better is to have *new* calculted column [f.e at offset=2], like: If c.Offset(0, 1) = "DR" Then c.offset(0,2).Value = c Else c.offset(0,2).Value = -c End If so your original column "h" is preserved, and multiple execution doesn't harm and how many rows [t] you have, and what is meaning "long execution" for you, 5 seconds, or more? when lacking memory, excel becomes fragmented, and sudenly execution slows down very much. can you trace the memory usage at task-manager? |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
change cellvalue based on value in adjacent cell
On Dec 16, 4:55*pm, Sam Wilson
wrote: Another thing that may help, put this at the start of the macro: application.Calculation = xlCalculationManual and this at the end: application.Calculation = xlCalculationAutomatic "Sane" wrote: In my account data i have amount in column h and Debit, Credit (DR/ CR) *in next column. To modify the values in column h the code is ........ For Each c In Range("H2:h" & t) * * If c.Offset(0, 1) = "DR" Then * * c.Value = c * * Else * * c.Value = -c * * End If * * Next ........ This part of macro takes abnormally high time. Please suggest any alternative to make this faster. .- Hide quoted text - - Show quoted text - Thanks sam. both put together worked great. |
#6
Posted to microsoft.public.excel.programming
|
|||
|
|||
change cellvalue based on value in adjacent cell
In addition to Sam's suggestion, You might try adding the following line
before any execution lines: Application.ScreenUpdating = False This will prevent Excel from "re-drawing" the screen each time it evaluates a cell. The manual calculation toggle should do just about the same thing. If you're in fact having memory issues, using both frees up quite a bit of resources especially if you're evaluating many cells. "Sane" wrote: In my account data i have amount in column h and Debit, Credit (DR/ CR) in next column. To modify the values in column h the code is ........ For Each c In Range("H2:h" & t) If c.Offset(0, 1) = "DR" Then c.Value = c Else c.Value = -c End If Next ........ This part of macro takes abnormally high time. Please suggest any alternative to make this faster. . |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
how do i update filter in a pivottable based on a cellvalue? | Excel Discussion (Misc queries) | |||
How to populate a cell with numeric value based on textselected from pull down in adjacent cell? | Excel Worksheet Functions | |||
Excel automation issue---enter date into cell based on other cellvalue | Excel Programming | |||
Different validation list based on cellvalue on the left | Excel Worksheet Functions | |||
change current cell colour based on the value of adjacent cell on other worksheet | Excel Programming |