Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 16
Default macro to delete the last value in each column

My worksheets have dozens of columns, each with up to a few thousand rows.
Both enumber of columns and rows varies from one data set tp another.

I'd like to have a macro that would delete the last value in each column,
but only if it's less than 90% of the penultimate value in that column.

Obviously, simply recording a macro with a Ctrl-Down key sequence in each
column will not work as the the last value is recorded as a static address,
but maybe using the OFFSET function would...

Help, please...

z.entropic
  #2   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 11,123
Default macro to delete the last value in each column

Hi z.entropic

You can find information here to find the last row number of a column
http://www.rondebruin.nl/last.htm

You can create a loop through all your columns and do the things you want

--

Regards Ron de Bruin
http://www.rondebruin.nl/tips.htm


"z.entropic" wrote in message ...
My worksheets have dozens of columns, each with up to a few thousand rows.
Both enumber of columns and rows varies from one data set tp another.

I'd like to have a macro that would delete the last value in each column,
but only if it's less than 90% of the penultimate value in that column.

Obviously, simply recording a macro with a Ctrl-Down key sequence in each
column will not work as the the last value is recorded as a static address,
but maybe using the OFFSET function would...

Help, please...

z.entropic

  #3   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 10,124
Default macro to delete the last value in each column

Be careful about running this twice.

Sub deletelastiflessthan90()
For i = 1 To 36' chg to suit
lr = Cells(Rows.Count, i).End(xlUp).Row
If Cells(lr - 1, i) < 0.9 * Cells(lr, i) Then Cells(lr, i).Clear
Next i
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"z.entropic" wrote in message
...
My worksheets have dozens of columns, each with up to a few thousand rows.
Both enumber of columns and rows varies from one data set tp another.

I'd like to have a macro that would delete the last value in each column,
but only if it's less than 90% of the penultimate value in that column.

Obviously, simply recording a macro with a Ctrl-Down key sequence in each
column will not work as the the last value is recorded as a static
address,
but maybe using the OFFSET function would...

Help, please...

z.entropic


  #4   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 11,501
Default macro to delete the last value in each column

try

Sub marine()
Dim LastColumn As Long
With ActiveSheet
LastColumn = .Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
End With
For x = 1 To LastColumn
Columns(x).Select
ActiveCell.Offset(65535, 0).End(xlUp).Select
If ActiveCell.Value (ActiveCell.Offset(-1, 0).Value * 0.9) Then _
ActiveCell.Value = ""
Next
End Sub

Right ckick sheet tab view code and paste in

Mike

"Don Guillett" wrote:

Be careful about running this twice.

Sub deletelastiflessthan90()
For i = 1 To 36' chg to suit
lr = Cells(Rows.Count, i).End(xlUp).Row
If Cells(lr - 1, i) < 0.9 * Cells(lr, i) Then Cells(lr, i).Clear
Next i
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"z.entropic" wrote in message
...
My worksheets have dozens of columns, each with up to a few thousand rows.
Both enumber of columns and rows varies from one data set tp another.

I'd like to have a macro that would delete the last value in each column,
but only if it's less than 90% of the penultimate value in that column.

Obviously, simply recording a macro with a Ctrl-Down key sequence in each
column will not work as the the last value is recorded as a static
address,
but maybe using the OFFSET function would...

Help, please...

z.entropic



  #5   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 10,124
Default macro to delete the last value in each column


Why are you SELECTING? How do you know row 1 is the longest column?

lc = Cells.Find(what:="*", _
after:=Cells(1, 1), searchorder:=xlByColumns, _
searchdirection:=xlPrevious).Column


--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Mike H" wrote in message
...
try

Sub marine()
Dim LastColumn As Long
With ActiveSheet
LastColumn = .Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
End With
For x = 1 To LastColumn
Columns(x).Select
ActiveCell.Offset(65535, 0).End(xlUp).Select
If ActiveCell.Value (ActiveCell.Offset(-1, 0).Value * 0.9) Then _
ActiveCell.Value = ""
Next
End Sub

Right ckick sheet tab view code and paste in

Mike

"Don Guillett" wrote:

Be careful about running this twice.

Sub deletelastiflessthan90()
For i = 1 To 36' chg to suit
lr = Cells(Rows.Count, i).End(xlUp).Row
If Cells(lr - 1, i) < 0.9 * Cells(lr, i) Then Cells(lr, i).Clear
Next i
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"z.entropic" wrote in message
...
My worksheets have dozens of columns, each with up to a few thousand
rows.
Both enumber of columns and rows varies from one data set tp another.

I'd like to have a macro that would delete the last value in each
column,
but only if it's less than 90% of the penultimate value in that column.

Obviously, simply recording a macro with a Ctrl-Down key sequence in
each
column will not work as the the last value is recorded as a static
address,
but maybe using the OFFSET function would...

Help, please...

z.entropic






  #6   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 146
Default macro to delete the last value in each column

He wants to delete the last value only if it's less than 90% of the
penultimate value. Your macro is deleting the last value if it's greater
than 90% of the penultimate value. The code should be: If ActiveCell.Value <
(ActiveCell.Offset(-1, 0).Value * 0.9) Then ActiveCell.Value = ""


"Mike H" wrote in message
...
try

Sub marine()
Dim LastColumn As Long
With ActiveSheet
LastColumn = .Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
End With
For x = 1 To LastColumn
Columns(x).Select
ActiveCell.Offset(65535, 0).End(xlUp).Select
If ActiveCell.Value (ActiveCell.Offset(-1, 0).Value * 0.9) Then _
ActiveCell.Value = ""
Next
End Sub

Right ckick sheet tab view code and paste in

Mike

"Don Guillett" wrote:

Be careful about running this twice.

Sub deletelastiflessthan90()
For i = 1 To 36' chg to suit
lr = Cells(Rows.Count, i).End(xlUp).Row
If Cells(lr - 1, i) < 0.9 * Cells(lr, i) Then Cells(lr, i).Clear
Next i
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"z.entropic" wrote in message
...
My worksheets have dozens of columns, each with up to a few thousand
rows.
Both enumber of columns and rows varies from one data set tp another.

I'd like to have a macro that would delete the last value in each
column,
but only if it's less than 90% of the penultimate value in that column.

Obviously, simply recording a macro with a Ctrl-Down key sequence in
each
column will not work as the the last value is recorded as a static
address,
but maybe using the OFFSET function would...

Help, please...

z.entropic





  #7   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 16
Default macro to delete the last value in each column

Yes, Dave, that's my intent, to delete the last value only and only if it is
LESS than 90% of the penultimate value, including "0", which crashes the
calcs.

z.entropic

"Dave Thomas" wrote:

He wants to delete the last value only if it's less than 90% of the
penultimate value. Your macro is deleting the last value if it's greater
than 90% of the penultimate value. The code should be: If ActiveCell.Value <
(ActiveCell.Offset(-1, 0).Value * 0.9) Then ActiveCell.Value = ""


"Mike H" wrote in message
...
try

Sub marine()
Dim LastColumn As Long
With ActiveSheet
LastColumn = .Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
End With
For x = 1 To LastColumn
Columns(x).Select
ActiveCell.Offset(65535, 0).End(xlUp).Select
If ActiveCell.Value (ActiveCell.Offset(-1, 0).Value * 0.9) Then _
ActiveCell.Value = ""
Next
End Sub

Right ckick sheet tab view code and paste in

Mike

"Don Guillett" wrote:

Be careful about running this twice.

Sub deletelastiflessthan90()
For i = 1 To 36' chg to suit
lr = Cells(Rows.Count, i).End(xlUp).Row
If Cells(lr - 1, i) < 0.9 * Cells(lr, i) Then Cells(lr, i).Clear
Next i
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"z.entropic" wrote in message
...
My worksheets have dozens of columns, each with up to a few thousand
rows.
Both enumber of columns and rows varies from one data set tp another.

I'd like to have a macro that would delete the last value in each
column,
but only if it's less than 90% of the penultimate value in that column.

Obviously, simply recording a macro with a Ctrl-Down key sequence in
each
column will not work as the the last value is recorded as a static
address,
but maybe using the OFFSET function would...

Help, please...

z.entropic





  #8   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 10,124
Default macro to delete the last value in each column

Use this

Sub deletelastiflessthan90()
lc = Cells.Find(what:="*", _
after:=Cells(1, 1), searchorder:=xlByColumns, _
searchdirection:=xlPrevious).Column
For i = 1 To lc
lr = Cells(Rows.Count, i).End(xlUp).Row
'MsgBox lr
If Cells(lr - 1, i) < 0.9 * Cells(lr, i) Then Cells(lr, i).Clear
Next i
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"z.entropic" wrote in message
...
Yes, Dave, that's my intent, to delete the last value only and only if it
is
LESS than 90% of the penultimate value, including "0", which crashes the
calcs.

z.entropic

"Dave Thomas" wrote:

He wants to delete the last value only if it's less than 90% of the
penultimate value. Your macro is deleting the last value if it's greater
than 90% of the penultimate value. The code should be: If
ActiveCell.Value <
(ActiveCell.Offset(-1, 0).Value * 0.9) Then ActiveCell.Value = ""


"Mike H" wrote in message
...
try

Sub marine()
Dim LastColumn As Long
With ActiveSheet
LastColumn =
.Range("A1").SpecialCells(xlCellTypeLastCell).Colu mn
End With
For x = 1 To LastColumn
Columns(x).Select
ActiveCell.Offset(65535, 0).End(xlUp).Select
If ActiveCell.Value (ActiveCell.Offset(-1, 0).Value * 0.9) Then _
ActiveCell.Value = ""
Next
End Sub

Right ckick sheet tab view code and paste in

Mike

"Don Guillett" wrote:

Be careful about running this twice.

Sub deletelastiflessthan90()
For i = 1 To 36' chg to suit
lr = Cells(Rows.Count, i).End(xlUp).Row
If Cells(lr - 1, i) < 0.9 * Cells(lr, i) Then Cells(lr, i).Clear
Next i
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"z.entropic" wrote in message
...
My worksheets have dozens of columns, each with up to a few thousand
rows.
Both enumber of columns and rows varies from one data set tp
another.

I'd like to have a macro that would delete the last value in each
column,
but only if it's less than 90% of the penultimate value in that
column.

Obviously, simply recording a macro with a Ctrl-Down key sequence in
each
column will not work as the the last value is recorded as a static
address,
but maybe using the OFFSET function would...

Help, please...

z.entropic






  #9   Report Post  
Posted to microsoft.public.excel.worksheet.functions
external usenet poster
 
Posts: 146
Default macro to delete the last value in each column

Your macro is the reverse of his request. He wants to delete the last value
only if it's less than 90% of the penultimate value. Your macro is deleting
the last value if the penultimate value is less than 90% of the last value.
The code should be: If Cells(lr, i) < 0.9 * Cells(lr - 1, i) Then Cells(lr,
i).Clear


"Don Guillett" wrote in message
...
Be careful about running this twice.

Sub deletelastiflessthan90()
For i = 1 To 36' chg to suit
lr = Cells(Rows.Count, i).End(xlUp).Row
If Cells(lr - 1, i) < 0.9 * Cells(lr, i) Then Cells(lr, i).Clear
Next i
End Sub

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"z.entropic" wrote in message
...
My worksheets have dozens of columns, each with up to a few thousand
rows.
Both enumber of columns and rows varies from one data set tp another.

I'd like to have a macro that would delete the last value in each column,
but only if it's less than 90% of the penultimate value in that column.

Obviously, simply recording a macro with a Ctrl-Down key sequence in each
column will not work as the the last value is recorded as a static
address,
but maybe using the OFFSET function would...

Help, please...

z.entropic




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Delete a Column when in a Macro-Worksheet Event? jeannie v Excel Worksheet Functions 2 July 19th 07 01:58 AM
delete a macro that isn't in macro list Jane Makinson Excel Discussion (Misc queries) 3 March 13th 06 01:10 PM
How can I delete a macro when the Delete button is not active? FCR Excel Worksheet Functions 0 March 9th 06 09:43 AM
set up a macro to delete characters in each cell of a column Rick Excel Discussion (Misc queries) 2 September 18th 05 03:02 AM
How do i delete a macro in Excel 2003 when delete isn't highlight Abel Excel Discussion (Misc queries) 2 September 13th 05 04:09 AM


All times are GMT +1. The time now is 10:30 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"