Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 661
Default Help with a macro.

Hi,
I've recorded the macro shown below. The idea is to look down a spreadsheet
with several thousand rows, looking in column D for "statistical", selecting
the row with the word statistical on it, and the next 22 rows; cutting the 23
rows and pasting into another sheet.
I want to adjust the macro so that, having run it the first time, I run it
again and it finds the next 23 rows starting with "statistical. Cut those
rows and paste on the other sheet below the first batch of 23 rows. Then keep
on running the macros until it finds all the "blocks of rows" starting with
"statistical. I will then end up with a sheet containing, say ten blocks of
rows, each of 23 rows, one beneath the other.
I'm a novice at this, so some help would be very appreciated.
Thanks for looking.
Paul



Columns("D:D").Select
Selection.Find(What:="Statistical", After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

Rows("743:765").Select
Range("C743").Activate
Selection.Cut
Sheets("Sheet1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("A2").Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Range("A11").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("A25").Select
End Sub
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,337
Default Help with a macro.

A look in vba help index for FINDNEXT will help. This is a modification

Sub findmove()
With Worksheets(5).Range("b1:b40")
On Error GoTo quitit
Set c = .Find("ss", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do

x = Sheets("sheet4").Cells(Rows.Count, "a").End(xlUp).Row + 1
'c.Value = 5
c.Resize(23, 1).Cut Sheets("sheet4").Cells(x, 1)

Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address < firstAddress
End If
End With
quitit:
End Sub

--
Don Guillett
SalesAid Software

"Paul" wrote in message
...
Hi,
I've recorded the macro shown below. The idea is to look down a
spreadsheet
with several thousand rows, looking in column D for "statistical",
selecting
the row with the word statistical on it, and the next 22 rows; cutting the
23
rows and pasting into another sheet.
I want to adjust the macro so that, having run it the first time, I run it
again and it finds the next 23 rows starting with "statistical. Cut those
rows and paste on the other sheet below the first batch of 23 rows. Then
keep
on running the macros until it finds all the "blocks of rows" starting
with
"statistical. I will then end up with a sheet containing, say ten blocks
of
rows, each of 23 rows, one beneath the other.
I'm a novice at this, so some help would be very appreciated.
Thanks for looking.
Paul



Columns("D:D").Select
Selection.Find(What:="Statistical", After:=ActiveCell,
LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext,
_
MatchCase:=False, SearchFormat:=False).Activate

Rows("743:765").Select
Range("C743").Activate
Selection.Cut
Sheets("Sheet1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("A2").Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Range("A11").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("A25").Select
End Sub



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 156
Default Help with a macro.

try something like this - may need a little tweaking, but I think it's what
you need:

CODE

sub test

Dim rngFound As Range
Dim sStart As String
Dim sDestRange As String

Sheet1.Activate
sStart = "D1"
sDestRange = "D1"

Range(sStart).Select

Set rngFound = Cells.Find(What:="Statistical", After:=ActiveCell,
LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext)

Do While Not rngFound Is Nothing

If Not rngFound Is Nothing Then
Range(rngFound.Offset(1, 0).Address, rngFound.Offset(23,
0).Address).EntireRow.Cut
Sheet2.Activate
Range(sDestRange).Offset(0, -3).Select
ActiveSheet.Paste

sDestRange = Range(sDestRange).End(xlDown).Offset(1, 0).Address

Sheet1.Activate
End If

Range(rngFound.Offset(1, 0).Address).Activate

Set rngFound = Cells.FindNext(After:=ActiveCell)

' sanity check
If rngFound.Offset(1, 0).Text = "" Then Exit Do
Loop
end sub
<<<< END CODE <<<<

HTH

Philip


"Paul" wrote:

Hi,
I've recorded the macro shown below. The idea is to look down a spreadsheet
with several thousand rows, looking in column D for "statistical", selecting
the row with the word statistical on it, and the next 22 rows; cutting the 23
rows and pasting into another sheet.
I want to adjust the macro so that, having run it the first time, I run it
again and it finds the next 23 rows starting with "statistical. Cut those
rows and paste on the other sheet below the first batch of 23 rows. Then keep
on running the macros until it finds all the "blocks of rows" starting with
"statistical. I will then end up with a sheet containing, say ten blocks of
rows, each of 23 rows, one beneath the other.
I'm a novice at this, so some help would be very appreciated.
Thanks for looking.
Paul



Columns("D:D").Select
Selection.Find(What:="Statistical", After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

Rows("743:765").Select
Range("C743").Activate
Selection.Cut
Sheets("Sheet1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("A2").Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Range("A11").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("A25").Select
End Sub

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 661
Default Help with a macro.

Thanks for the help guys, it's really appreciated. I managed to get it to
work just as I wanted!

Thanks

Paul

"Philip" wrote:

try something like this - may need a little tweaking, but I think it's what
you need:

CODE

sub test

Dim rngFound As Range
Dim sStart As String
Dim sDestRange As String

Sheet1.Activate
sStart = "D1"
sDestRange = "D1"

Range(sStart).Select

Set rngFound = Cells.Find(What:="Statistical", After:=ActiveCell,
LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext)

Do While Not rngFound Is Nothing

If Not rngFound Is Nothing Then
Range(rngFound.Offset(1, 0).Address, rngFound.Offset(23,
0).Address).EntireRow.Cut
Sheet2.Activate
Range(sDestRange).Offset(0, -3).Select
ActiveSheet.Paste

sDestRange = Range(sDestRange).End(xlDown).Offset(1, 0).Address

Sheet1.Activate
End If

Range(rngFound.Offset(1, 0).Address).Activate

Set rngFound = Cells.FindNext(After:=ActiveCell)

' sanity check
If rngFound.Offset(1, 0).Text = "" Then Exit Do
Loop
end sub
<<<< END CODE <<<<

HTH

Philip


"Paul" wrote:

Hi,
I've recorded the macro shown below. The idea is to look down a spreadsheet
with several thousand rows, looking in column D for "statistical", selecting
the row with the word statistical on it, and the next 22 rows; cutting the 23
rows and pasting into another sheet.
I want to adjust the macro so that, having run it the first time, I run it
again and it finds the next 23 rows starting with "statistical. Cut those
rows and paste on the other sheet below the first batch of 23 rows. Then keep
on running the macros until it finds all the "blocks of rows" starting with
"statistical. I will then end up with a sheet containing, say ten blocks of
rows, each of 23 rows, one beneath the other.
I'm a novice at this, so some help would be very appreciated.
Thanks for looking.
Paul



Columns("D:D").Select
Selection.Find(What:="Statistical", After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

Rows("743:765").Select
Range("C743").Activate
Selection.Cut
Sheets("Sheet1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("A2").Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Range("A11").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("A25").Select
End Sub

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
Macro recorded... tabs & file names changed, macro hangs Steve Excel Worksheet Functions 3 October 30th 09 11:41 AM
Macro Help Needed - Excel 2007 - Print Macro with Auto Sort Gavin Excel Worksheet Functions 0 May 17th 07 01:20 PM
how to count/sum by function/macro to get the number of record to do copy/paste in macro tango Excel Programming 1 October 15th 04 01:16 PM
macro to delete entire rows when column A is blank ...a quick macro vikram Excel Programming 4 May 3rd 04 08:45 PM
Start Macro / Stop Macro / Restart Macro Pete[_13_] Excel Programming 2 November 21st 03 05:04 PM


All times are GMT +1. The time now is 09:11 AM.

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

About Us

"It's about Microsoft Excel"