ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Need a macro to evaluate and sift-through data (https://www.excelbanter.com/excel-programming/299331-need-macro-evaluate-sift-through-data.html)

Ronny Hamida[_2_]

Need a macro to evaluate and sift-through data
 
I need to write a macro to do the following:

1) Remove any entire line when a value in column A
(labeled as JobCode) begins with a letter "R":

For instance -

Column A Column B
A539292 This line is a test
B192591 This line is another test
R182571 This entire line should be removed
C194712 This line is yet another test

2) Sort the data by Column C (already have this part done)

3) Sift through the data in Column C and inserting 2
blank lines after each time the first 4 digits in column C
changes:

For instance -

Column B Column C
Testing Line 2601999999
Testing Line 2601999999
Testing Line 2601999999
(blank line)
(blank line)
Testing Line 2602999999
Testing Line 2602999999
(blank line)
(blank line)
Testing Line 2603999999 (etc)

4) And if possible, while inserting the two blank lines,
is there something else I can do to automatically add what
is in Column D together between these blank lines and
change the font of this total? When I do this manually, I
use the AutoSum button and it works only because of the
blank lines seperating the rows.

Example:

Column C Column D
2601999999 1
2601999999 1
(blank) (total: 2 in red)
(blank line)
2602999999 1
2602999999 2
(blank) (total: 3 in red) etc.

As usual, thank you to everyone in advance who can help!
If it helps, my current macro labels the column headers
(which might be unnecessary). Also, my attempts to do
most of this have failed because whenever I wanted it to
evaluate 1 column, it continued to the next column. I've
since then removed that coding due to fustration... :-/

Confused as always,
Ronny


Frank Kabel

Need a macro to evaluate and sift-through data
 
Hi
some ideas:
1. remove rows:
Sub delete_rows()
Dim lastrow As Long
Dim row_index As Long
Application.ScreenUpdating = False
lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
For row_index = lastrow - 1 To 1 Step -1
If Left(Cells(row_index, "A").Value,1) = "R" then
Cells(row_index, "A").EntireRow.delete
End If
Next
Application.ScreenUpdating = True
End Sub

2. Sorting: you said you already did this :-)

3. Inserting rows / 4. Adding formulas:
Sub insert_rows()
Dim lastrow As Long
Dim row_index As Long

lastrow = ActiveSheet.Cells(Rows.count, "C").End(xlUp).row
For row_index = lastrow - 1 To 1 Step -1
If Left(Cells(row_index, "C").Value,4) < Left(Cells(row_index + 1,
"C").Value,4) _
Then
Cells(row_index + 1, "C").resize(2,1).EntireRow.Insert
(xlShiftDown)
Cells(row_index + 1, "D").formulaR1C1= _

"=SUMPRODUCT(--(LEFT(R1C3:R[-1]C3,4)=LEFT(R[-1]C3,4)),R1C4:R[-1]C4)"
Cells(row_index + 1, "D").font.colorindex=3
End If
Next
End Sub



--
Regards
Frank Kabel
Frankfurt, Germany

"Ronny Hamida" schrieb im Newsbeitrag
...
I need to write a macro to do the following:

1) Remove any entire line when a value in column A
(labeled as JobCode) begins with a letter "R":

For instance -

Column A Column B
A539292 This line is a test
B192591 This line is another test
R182571 This entire line should be removed
C194712 This line is yet another test

2) Sort the data by Column C (already have this part done)

3) Sift through the data in Column C and inserting 2
blank lines after each time the first 4 digits in column C
changes:

For instance -

Column B Column C
Testing Line 2601999999
Testing Line 2601999999
Testing Line 2601999999
(blank line)
(blank line)
Testing Line 2602999999
Testing Line 2602999999
(blank line)
(blank line)
Testing Line 2603999999 (etc)

4) And if possible, while inserting the two blank lines,
is there something else I can do to automatically add what
is in Column D together between these blank lines and
change the font of this total? When I do this manually, I
use the AutoSum button and it works only because of the
blank lines seperating the rows.

Example:

Column C Column D
2601999999 1
2601999999 1
(blank) (total: 2 in red)
(blank line)
2602999999 1
2602999999 2
(blank) (total: 3 in red) etc.

As usual, thank you to everyone in advance who can help!
If it helps, my current macro labels the column headers
(which might be unnecessary). Also, my attempts to do
most of this have failed because whenever I wanted it to
evaluate 1 column, it continued to the next column. I've
since then removed that coding due to fustration... :-/

Confused as always,
Ronny



Ronny Hamida[_2_]

Need a macro to evaluate and sift-through data
 
Thank you, Frank, for the help, however there's just one
more dilema with the code for inserting blank lines and
totalling up Column D:

I think the code you gave goes from the bottom of the
spreadsheet, up. When it does this, the blank lines occur
just fine, but the totalling up (of each section) does
not. While watching the macro, it seems that the
totalling up works fine until more blank lines are put in
(seperating due to the data in Column C).

Example of what happens during the macro run (not a
completed run):
Column C Column D
2601999999 1
2601999999 1
2602999999 1
2602999999 2
(blank) (total: 5)
(blank line)
2604999999 5
2604999999 8
(blank) (total: #VALUE!)
(blank line)

^^^^^^^^^
A numerical value occurs at first until the blank lines
are inserted above. That's when I get the #VALUE! Also,
the numerical value that appears before the blank lines
are made above is incorrect (as seen where it
says, "total: 5") because the data before that has not
been processed for the Column C change yet. Does that
make any sense?

Is there any way to change it so that it goes down the
list? And if so, how can I accomodate a header (since the
header would be different than the data, thus, two blank
lines would occur under it)?

Thank you again!
Ronny

-----Original Message-----
Hi
some ideas:
1. remove rows:
Sub delete_rows()
Dim lastrow As Long
Dim row_index As Long
Application.ScreenUpdating = False
lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
For row_index = lastrow - 1 To 1 Step -1
If Left(Cells(row_index, "A").Value,1) = "R" then
Cells(row_index, "A").EntireRow.delete
End If
Next
Application.ScreenUpdating = True
End Sub

2. Sorting: you said you already did this :-)

3. Inserting rows / 4. Adding formulas:
Sub insert_rows()
Dim lastrow As Long
Dim row_index As Long

lastrow = ActiveSheet.Cells(Rows.count, "C").End(xlUp).row
For row_index = lastrow - 1 To 1 Step -1
If Left(Cells(row_index, "C").Value,4) < Left(Cells

(row_index + 1,
"C").Value,4) _
Then
Cells(row_index + 1, "C").resize

(2,1).EntireRow.Insert
(xlShiftDown)
Cells(row_index + 1, "D").formulaR1C1= _

"=SUMPRODUCT(--(LEFT(R1C3:R[-1]C3,4)=LEFT(R[-1]

C3,4)),R1C4:R[-1]C4)"
Cells(row_index + 1, "D").font.colorindex=3
End If
Next
End Sub



--
Regards
Frank Kabel
Frankfurt, Germany

"Ronny Hamida" schrieb im

Newsbeitrag
...
I need to write a macro to do the following:

1) Remove any entire line when a value in column A
(labeled as JobCode) begins with a letter "R":

For instance -

Column A Column B
A539292 This line is a test
B192591 This line is another test
R182571 This entire line should be removed
C194712 This line is yet another test

2) Sort the data by Column C (already have this part

done)

3) Sift through the data in Column C and inserting 2
blank lines after each time the first 4 digits in

column C
changes:

For instance -

Column B Column C
Testing Line 2601999999
Testing Line 2601999999
Testing Line 2601999999
(blank line)
(blank line)
Testing Line 2602999999
Testing Line 2602999999
(blank line)
(blank line)
Testing Line 2603999999 (etc)

4) And if possible, while inserting the two blank lines,
is there something else I can do to automatically add

what
is in Column D together between these blank lines and
change the font of this total? When I do this

manually, I
use the AutoSum button and it works only because of the
blank lines seperating the rows.

Example:

Column C Column D
2601999999 1
2601999999 1
(blank) (total: 2 in red)
(blank line)
2602999999 1
2602999999 2
(blank) (total: 3 in red) etc.

As usual, thank you to everyone in advance who can help!
If it helps, my current macro labels the column headers
(which might be unnecessary). Also, my attempts to do
most of this have failed because whenever I wanted it to
evaluate 1 column, it continued to the next column.

I've
since then removed that coding due to fustration... :-/

Confused as always,
Ronny


.



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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com