Macro to compare old prices with new prices for stock and show(-/+)

KalilMe

Active Member
Joined
Mar 5, 2021
Messages
382
Office Version
  1. 2016
Platform
  1. Windows
Hello,
in QW sheet will be multiple columns contain prices and every time I will add new column contain new prices .
in STOCK sheet contains data in columns A:E
what I want create report in columns G:L with formatting and borders by brings the prices from last column in QW sheet and put in column J , as to column K=column I* column J
column L =column K- column E
in lastrow for column G when amount is minus in column L then populate LOSE word ,amount is plus in column L then populate PROFIT word.
if there is empty cell in last column in QW when brings price from previous column(not the first column) for instance if there is price in columnL,M,N and if the id doesn't existed price in column N then will brings from column M .
when create report will match BATCH column for two sheets , also if there is ID in STOCK sheet and it's not existed in QW sheet then will show as in STOCK sheet.


subtra.xlsm
JKLM
1ITEMBATCH01/11/202402/11/2024
21APP PP FRUIT12.0011.00
32BAN FF FRUIT9.00
43CU CMC VEG11.0011.00
54FRU BANN MU22.0023.00
65PI PIA FRUIT21.0021.00
76PO PTT VEG12.0011.00
87TO TMA VEG5.004.00
98TE TEE FOOD23.0018.00
109TRB POT BNG22.0024.00
QW




subtra.xlsm
ABCDEFGHIJKLMNO
1ITEMBATCHQTYUNIT PRICETOTAL
21TO TMA VEG10.005.0050.00
32PO PTT VEG20.0010.00200.00
43BAN FF FRUIT100.0012.001,200.00
54APP PP FRUIT100.0010.001,000.00
65PI PIA FRUIT12.0022.00264.00
76TE TEE FOOD100.0023.002,300.00
87CU CMC VEG120.0021.002,520.00
98TRB POT BNG100.0022.002,200.00
109FRU BANN MU124.0022.002,728.00
11
12
13
14
STOCK



result
subtra.xlsm
ABCDEFGHIJKLMNO
1ITEMBATCHQTYUNIT PRICETOTALITEMBATCHQTYUNIT PRICETOTALD/P
21TO TMA VEG10.005.0050.001TO TMA VEG10.004.0040.00-10.00
32PO PTT VEG20.0010.00200.002PO PTT VEG20.0011.00220.0020.00
43BAN FF FRUIT100.0012.001,200.003BAN FF FRUIT100.009.00900.00-300.00
54APP PP FRUIT100.0010.001,000.004APP PP FRUIT100.0011.001,100.00100.00
65PI PIA FRUIT12.0022.00264.005PI PIA FRUIT12.0021.00252.00-12.00
76TE TEE FOOD100.0023.002,300.006TE TEE FOOD100.0018.001,800.00-500.00
87CU CMC VEG120.0021.002,520.007CU CMC VEG120.0011.001,320.00-1,200.00
98TRB POT BNG100.0022.002,200.008TRB POT BNG100.0024.002,400.00200.00
109FRU BANN MU124.0022.002,728.009FRU BANN MU124.0023.002,852.00124.00
11LOSE-1,578.00
12
13
STOCK
Cell Formulas
RangeFormula
L2:L10L2=K2-E2
L11L11=SUM(L2:L10)

I need macro , I don't PQ or PT , formulas
thanks
 

Excel Facts

Fastest way to copy a worksheet?
Hold down the Ctrl key while dragging tab for Sheet1 to the right. Excel will make a copy of the worksheet.
I'm not sure what that means but if that is the QW sheet, what happened in your "right" results to the requirement to average?
as you did will show the same price without calculate average.
 
Upvote 0
Sorry I did not observe the Columns in QW sheet. I mistook it as Columns A,B,C & D. Now I have changed to J,K,L, and M.

VBA Code:
Sub CreateTable()
Application.ScreenUpdating = False
Dim Lrq&, Lrs&, Lcq&, T&, Ta&
Dim Frng1 As Range, Frng2 As Range

Lrq = Sheets("QW").Range("J" & Rows.Count).End(xlUp).Row
Lcq = Sheets("QW").Cells(1, Columns.Count).End(xlToLeft).Column
With Sheets("STOCK")
Lrs = .Range("A" & Rows.Count).End(xlUp).Row
.Range("G1").CurrentRegion.Clear
.Range("A1").CurrentRegion.Resize(, 3).Copy .Range("G1")
For T = 2 To Lrs
Set Frng1 = Sheets("QW").Range("K2:K" & Lrq).Find(.Range("H" & T).Value)
If Not Frng1 Is Nothing Then
    For Ta = Lcq To Range("L1").Column Step -1
    If Sheets("QW").Cells(Frng1.Row, Ta) <> "" Then
    .Range("J" & T) = Sheets("QW").Cells(Frng1.Row, Ta)
    Exit For
    End If
    Next Ta
End If
Next T
.Range("K2:K" & Lrs).Formula = "=I2*J2"
.Range("L2:L" & Lrs).Formula = "=K2-E2"
.Range("G1:L1").Copy .Range("J1")
.Range("J1:L1") = Array("UNIT PRICE", "TOTAL", "D/P")
.Range("L" & Lrs + 1).Formula = "=Sum(L2:L" & Lrs & ")"
If .Range("L" & Lrs + 1) < 0 Then .Range("G" & Lrs + 1) = "LOSS" Else .Range("G" & Lrs + 1) = "GAIN"
.Range("H1").CurrentRegion.Borders.LineStyle = xlContinuous
End With

Application.ScreenUpdating = True
End Sub
 
Upvote 0
@Fuji
based on post#30 there is missed value in column L.
sub.xlsm
GHIJKL
1ITEMBATCHQTYUNIT PRICETOTALD/P
21TO TMA VEG100033.0033,000.0032,950.00
32PO PTT VEG2011.00220.0020.00
43BAN FF FRUIT10011.001,100.00-100.00
54APP PP FRUIT10011.001,100.00100.00
65PI PIA FRUIT1221.00252.00-12.00
76TE TEE FOOD10018.001,800.00-500.00
87CU CMC VEG12011.001,320.00-1,200.00
98TRB POT BNG10024.002,400.00200.00
109FRU BANN MU12445.005,580.002,852.00
1110FRU we3 MU12422.002,728.00
12GAIN34,310.00
STOCK
Cell Formulas
RangeFormula
L12L12=SUM(L$2:L11)
 
Upvote 0
@kvsrinivasamurthy
there are missed values for new item in STOCK sheet for row 11.
the same problem ,check post#27.


sub.xlsm
GHIJKL
1ITEMBATCHQTYUNIT PRICETOTALD/P
21TO TMA VEG1,000.00333300032,950.00
32PO PTT VEG20.001122020.00
43BAN FF FRUIT100.00111100-100.00
54APP PP FRUIT100.00111100100.00
65PI PIA FRUIT12.0021252-12.00
76TE TEE FOOD100.00181800-500.00
87CU CMC VEG120.00111320-1,200.00
98TRB POT BNG100.00242400200.00
109FRU BANN MU124.004555802,852.00
1110FRU we3 MU124.000-2,728.00
12GAIN31,582.00
STOCK
Cell Formulas
RangeFormula
K2:K11K2=I2*J2
L2:L11L2=K2-E2
L12L12=SUM(L2:L11)
 
Upvote 0
What row of col.L?

If we are talking about difference data set, it is just wasting time.

Upload a workbook with the exact data and exact desire result that you want.
 
Upvote 0
If we are talking about difference data set, it is just wasting time.
yes you're right ,sorry .
ok it just remaining this part
just I would create borders, I would a slight modification if you don't mind, please.
I would show average price instead of brings price from last column in QW sheet.
example for ID "TE TEE FOOD" QW sheet=18 and the price in stock sheet=23 so when show in result will be average(18,23)=21
I posted in post#4 I forgot mentioning in OP ,sorry about it
it's up to you if you still interest .
thank you for your time.
 
Upvote 0
First of all, is my code working for your initial requirement or not?

If not, you should tell me how is it not working.
If it is working and change the UNIT PRICE to average, how do you want to calculate the TOTAL?

Better upload your workbook with your EXACT desired results to avoid any confusion.
 
Upvote 0

Forum statistics

Threads
1,223,604
Messages
6,173,316
Members
452,510
Latest member
RCan29

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