Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have a macro (below) which performs the functions shown in the sample
spreadsheet (below). It works fine except that if instead of having line 7 be another name you have line 7 be another "group" (ie. a group immediately following a previous group) it doesn't work properly and ignores the next group. This means to work there must be a row without "group" or "group member" in it before the next "group" can work. How do I handle one group (with members) immediately followed by another group (with members)??? There can be a number of groups in a row before a row without a group. Any help would be really appreciated. Thanks, Andrew ORIGINAL: A B C D E F 1)[Name1] [data1][Address1][City1] [State1] 2)[Name2] "Group" [Address2][City2] [State2] 3)[Name3] "Group member" [data2] 4)[Name4] "Group member" [data3] 5)[Name5] "Group" [Address3][City3] [State3] 3)[Name6] "Group member" [data4] 4)[Name7] "Group member" [data5] 7)[Name8] [data6][Address4][City4] [State4] Needed (after macro): A B C D E 1)[Name1] [data1][Address1][City1] [State1] 3)[Name3] [data2][Address2][City2] [State2] 4)[Name4] [data3][Address2][City2] [State2] 5)[Name6] [data4][Address3][City3] [State3] 6)[Name7] [data5][Address3][City3] [State3] 7)[Name8] [data6][Address4][City4] [State4] Sub Groups() Dim Rng1 As Range, Rng2 As Range Dim C As Range, DeleteRng As Range Dim FirstAdd As String Application.ScreenUpdating = False Set Rng1 = ActiveSheet.Columns("B") Set C = Rng1.Find("Group", LookIn:=xlValues) If Not C Is Nothing Then FirstAdd = C.Address Set Rng2 = Range(C.Offset(, 2), C.Offset(, 10)) Do Set C = C.Offset(1) If LCase(Trim(C.Value)) = "group member" Then _ Range(C.Offset(, 2), C.Offset(, 10)) = Rng2.Value Loop Until LCase(Trim(C.Value)) < "group member" Set DeleteRng = Rng2.EntireRow End If Do Set C = Rng1.FindNext(C) If C.Address = FirstAdd Then Exit Do Set Rng2 = Range(C.Offset(, 2), C.Offset(, 10)) Do Set C = C.Offset(1) If LCase(Trim(C.Value)) = "group member" Then _ Range(C.Offset(, 2), C.Offset(, 10)) = Rng2.Value Loop Until LCase(Trim(C.Value)) < "group member" Set DeleteRng = Union(DeleteRng, Rng2.EntireRow) Loop While Not C Is Nothing DeleteRng.Delete Columns("B").EntireColumn.Delete Application.ScreenUpdating = True End Sub *** Sent via Developersdex http://www.developersdex.com *** Don't just participate in USENET...get rewarded for it! |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Am I missing some easy solution to my problem? | Excel Worksheet Functions | |||
Easy Problem that I can't figure out | Excel Discussion (Misc queries) | |||
OsCommerce - Easy Populate Script - CSV/TXT Conversion Problem. | Excel Discussion (Misc queries) | |||
VBA macro easy problem! | Excel Programming | |||
easy problem | Excel Programming |