Macro to extract data from report

Alex881

New Member
Joined
May 6, 2019
Messages
39
Hello,
I have a tedious task of reviewing data in a piece of software. I only need two pieces of data in order to do my review, but there are a lot of data that show up.

I only need the data shown below (data are fictional):

xxxxx08a.p 7.8.50 *ANALYSIS REPORT Date: 09/09/19
Page: 1 P999999 Time: 14:57:59
A/R CAR BILL-TO NAME CITY ST PHONE CR LIMIT HOLD REASON
REP NBR CODE
WW 17999 BOGDAN HOME CART SAN ANTONIO TX 555-555-5555 009,999,999 yes C11799917999S7777777
Address: 9999 119TH STREET Zip: 5555525000S8888888
55555S7666666
Ord Date Sales Bill-To Purchase Order Doc Amt S/O Ship Credit55555S7366666
Order Status Via Card
09/09/19 S7777777 1000000 iv000000g8 2,250.00 HD FXGRS7777777
Contact Name:donald duck/ purch 555 555 5555
C/S Rep: Daffy Doodles
---------------
CAR Hold Total: 2,250.00
CAR Commit Total: 0.00
------------------------------------------------------------------------------------------------------------------------
ZZ 25000 SUPPLY'S INC NY 999.999.999 009,999,999 yes C125000
Address: 19999 BIG AVENUE Zip: 99999
Ord Date Sales Bill-To Purchase Order Doc Amt S/O Ship Credit
Order Status Via Card
09/09/19 S8888888 10999999 6049999 4,157.85 HD FXGRS8888888
Contact Name:EMAIL JOHN DOE JOHNDOE@GMAIL.COM
C/S Rep: Amelia Prayers
---------------
CAR Hold Total: 4,157.85
CAR Commit Total: 0.00
------------------------------------------------------------------------------------------------------------------------
Page: 2 PRDDDD Time: 14:57:59
A/R CAR BILL-TO NAME CITY ST PHONE CR LIMIT HOLD REASON
REP NBR CODE
hh 55555 CALIFORNIA INC SAN FRANCISCO CA 555-555-5555 009,999,999 yes C155555
Address: BIG ROAD 120 Zip: 66666
1666 BIG CITY AVENUE
Ord Date Sales Bill-To Purchase Order Doc Amt S/O Ship Credit
Order Status Via Card
09/09/19 S7666666 16666666 099999BERT 2,342.34 HD FXSURES7666666
Contact Name:EMAIL JANE APOSTLE
C/S Rep: JARDIN HARPER
Ord Date Sales Bill-To Purchase Order Doc Amt S/O Ship Credit
Order Status Via Card
09/09/19 S7366666 17777777 090919BERNIE 7,450.41 HD FXGRS7366666
Contact Name:EMAIL JANE APOSTLE
C/S Rep: JORD CARVER
---------------
CAR Hold Total: 9,792.75
CAR Commit Total: 0.00

https://imgur.com/a/xsTvqlx <--- The first image shows how the first piece of data is 6 characters to the left of the start of the data, and it is 5 characters long. I used =MID(A5,6,5) in order to extract the 5 digit numbers for each order.

Column K in the images above is colored orange. That's where I manually input formulas. Columns M and N have some data colored yellow. That's how I want the data to be presented once the macro is ran. I manually inputted that data.

The second image in the link above shows how the second piece of data is 8 characters long and starts at the 18th character. I used =MID(A10,18,8) in order to extract the 8 alphanumeric string for each order.

The yellow section shows how I want the data to be arranged once the Macro is complete. I want the appropriate 5 digit number in one column, and in the cell directly to the right, the applicable 8 digit alphanumeric string.

As you can see, in some cases, the customer has placed two orders so the pattern isn't exactly the same. In this case, I want the 5 digit number repeated and the appropriate 8 digit alphanumeric string for each order.

NOTE: In some instances, either the 'WW', 'ZZ', etc will be blank. It is always two digits or two letters long. Also, in some instances, the 5 digit number will be blank (can be blank by itself or in addition to the 'WW'/'ZZ'/etc). In cases like this, would it be possible to have the macro tell me that it's detected an issue and where? Or just note that it found blank data.

Thank you very much.

<tbody>
</tbody>
 
Last edited:
Irony is that with the way I'm currently copy/pasting (not using a macro), the formula can just be a MID formula.

Obviously though I want something more robust. I really need a macro that will just take everything I need and wrap it up nicely for me. Heh. Anyway, any help would be appreciated.
 
Upvote 0

Excel Facts

Excel Joke
Why can't spreadsheets drive cars? They crash too often!
Actually, is there a way to copy data from a column into another column, based on certain criteria?

For example, data in column C that starts with an 'S' will go into column K, starting in cell K5. Anything that doesn't start with an 'S' will go into column J, starting with J5. Does this make sense?

I want a formula that I can have in columns J and K that will auto-populate with data once I paste in my original data..hope this makes sense.
 
Last edited:
Upvote 0
I really need a macro that will just take everything I need and wrap it up nicely for me. Heh. Anyway, any help would be appreciated.
See if this comes anywhere near what you want. It is a bit hard for me to be sure as I think many of the spaces in your data have disappeared when you pasted the sample data into post 1.

Anyway, give it a try with a copy of your data.
I have assumed all that data from post 1 is actually in column A.

Code:
Sub Extract_Data()
  Dim a As Variant, b As Variant, CurrCust As Variant
  Dim i As Long, k As Long
  Dim s As String
  
  a = Range("A1", Range("A" & Rows.Count).End(xlUp)).Value
  ReDim b(1 To UBound(a), 1 To 2)
  For i = 2 To UBound(a) - 1
    s = LCase(a(i, 1))
    Select Case True
      Case s Like "address:*"
        CurrCust = Mid(a(i - 1, 1), 6, 5)
        If Not CurrCust Like "#####" Then CurrCust = "Check??"
      Case s Like "order status via card*"
        k = k + 1
        b(k, 1) = CurrCust
        b(k, 2) = Mid(a(i + 1, 1), 18, 8)
    End Select
  Next i
  Range("M2:N2").Resize(k).Value = b
End Sub
 
Upvote 0
That's right - all the data are in column A. Every time I paste data into my Excel sheet from this software program, the data go into column A.

I tried using your Macro on some sample data. I just got an error that states '400'.

Here's some more fictional data (all in column A):
xxxxx08a.p 7.8.50 *ANALYSIS REPORT Date: 09/09/19
Page: 1 P999999 Time: 14:57:59
A/R CAR BILL-TO NAME CITY ST PHONE CR LIMIT HOLD REASON
REP NBR CODE
01 17999 BOGDAN HOME CART SAN ANTONIO TX 555-555-5555 009,999,999 yes C1
Address: 9999 119TH STREET Zip: 55555
Ord Date Sales Bill-To Purchase Order Doc Amt S/O Ship Credit
Order Status Via Card
09/09/19 S7777777 1000000 iv000000g8 2,250.00 HD FXGR
Contact Name:donald duck/ purch 555 555 5555
C/S Rep: Daffy Doodles
---------------
CAR Hold Total: 2,250.00
CAR Commit Total: 0.00
------------------------------------------------------------------------------------------------------------------------
ZZ 25000 SUPPLY'S INC NY 999.999.999 009,999,999 yes C1
Address: 19999 BIG AVENUE Zip: 99999
Ord Date Sales Bill-To Purchase Order Doc Amt S/O Ship Credit
Order Status Via Card
09/09/19 S8888888 10999999 6049999 4,157.85 HD FXGR
Contact Name:EMAIL JOHN DOE JOHNDOE@GMAIL.COM
C/S Rep: Amelia Prayers
---------------
CAR Hold Total: 4,157.85
CAR Commit Total: 0.00
------------------------------------------------------------------------------------------------------------------------
Page: 2 PRDDDD Time: 14:57:59
A/R CAR BILL-TO NAME CITY ST PHONE CR LIMIT HOLD REASON
REP NBR CODE
hh 55555 CALIFORNIA INC SAN FRANCISCO CA 555-555-5555 009,999,999 yes C1
Address: BIG ROAD 120 Zip: 66666
1666 BIG CITY AVENUE
Ord Date Sales Bill-To Purchase Order Doc Amt S/O Ship Credit
Order Status Via Card
09/09/19 S7666666 16666666 099999BERT 2,342.34 HD FXSURE
Contact Name:EMAIL JANE APOSTLE
C/S Rep: JARDIN HARPER
Ord Date Sales Bill-To Purchase Order Doc Amt S/O Ship Credit
Order Status Via Card
09/09/19 S7366666 17777777 090919BERNIE 7,450.41 HD FXGR
Contact Name:EMAIL JANE APOSTLE
C/S Rep: JORD CARVER
---------------
CAR Hold Total: 9,792.75
CAR Commit Total: 0.00

<tbody>
</tbody>

Also, see the imgur link for a picture of what that data look like (one example):

https://imgur.com/a/Yo6OUhT
 
Last edited:
Upvote 0
Right now I'm using this to extract the correct data from each row (assuming today's date is the order date). I don't know how (yet) to find anything with a '**/**/**' type format.

=IF(SUMPRODUCT(--ISNUMBER(FIND("009,999",A5)))>0,MID(A5,6,5),"")&IF(ISNUMBER(FIND(" 09/13/19 ",A5)),MID(A5,18,8),"")

I copy the above formula down an entire column - it makes the correct decisions. It leaves all cells it doesn't need to touch blank, while extracting a customer's ID # and a customer's order #.

Having said that, it is possible that a customer's ID # will show up twice - this is because the software program makes new pages and if part of the data is on one page and part is on another, then the data repeat in that regard (if that makes sense). It's not a huge issue, but it's something I'm thinking about..

EDIT: Nevermind, this formula is better (using search):

=IF(SUMPRODUCT(--ISNUMBER(FIND("009,999",A15)))>0,MID(A15,6,5),"")&IF(ISNUMBER(SEARCH(" **/**/19 ",A15)),MID(A15,18,8),"")
 
Last edited:
Upvote 0
Further simplified the above edited formula to:

=IF(ISNUMBER(FIND("009,999",A5)),MID(A5,6,5),"")&IF(ISNUMBER(SEARCH(" **/**/19 ",A5)),MID(A5,18,8),"")

This works - it extracts the correct data everytime.

Now I need something robust that will take all this data and put it in two columns (one column that has the customer's five digit ID # and a column to the right of that one that has the appropriate eight digit alphanumeric string).
 
Upvote 0
I've separated the data that show in that one column by using two formulas:

(1): =IF(LEN(K5)=5,K5,"")

&

(2): =IF(ISNUMBER(SEARCH("S*******",K5,1)),K5,"")

This now makes my data show up in two columns. Now it's a matter of getting the appropriate data to show side by side..if that makes sense..
 
Upvote 0
Nevermind. I got help and was able to figure out the entire thing. Not using a macro, just several columns worth of formulas and then a PivotTable that I have to refresh when I paste in new data to column A.
 
Upvote 0
.. was able to figure out the entire thing.
Glad you got something that worked for you. :)

Do you have to do this task regularly? I'm pretty sure we would be able to get a macro going for you with a bit more effort.
 
Upvote 0
I do this task several times a day. However, the way it works now is fantastic. All I really do is paste data then refresh a PivotTable. I genuinely appreciate the offer for a macro, but at this point I'm very satisfied! Thank you so much for the assistance though. :)
 
Upvote 0

Forum statistics

Threads
1,214,893
Messages
6,122,121
Members
449,066
Latest member
Andyg666

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top