A family of Microsoft relational database management systems designed for ease of use.
Rather than trying to compare values in the report I would suggest computing the values in a query which can be used as the subreport's RecordSource property. Without knowing the details of the base tables from which the data is drawn I can't give you the query of course, but here's an example using Northwind (with the order dates adjusted to cover 2017/2018):
SELECT FORMAT([Order Date] ,"mmmm yyyy") AS OrderMonth,
SUM([Unit Price]*Quantity) AS Total,
IIF(NZ((SELECT SUM([Unit Price]*Quantity)
FROM Orders AS O2 INNER JOIN [Order Details] As OD2
ON O2.[Order ID] = OD2.[Order ID]
WHERE YEAR(O2.[Order Date]) = 2017
AND MONTH(O2.[Order Date]) = MONTH(O1.[Order Date])),0)
>SUM([Unit Price]*Quantity),"Down","Up") AS Movement
FROM Orders AS O1 INNER JOIN [Order Details] As OD1
ON O1.[Order ID] = OD1.[Order ID]
WHERE YEAR([Order Date]) = 2018
GROUP BY YEAR([Order Date]), MONTH([Order Date]),
FORMAT([Order Date] ,"mmmm yyyy");
It should not be too difficult to compute the movement of the yearly totals directly in the report, or you can use an amended version of the above, grouping by year only:
SELECT YEAR([Order Date]) AS OrderYear,
SUM([Unit Price]*Quantity) AS Total,
IIF(NZ((SELECT SUM([Unit Price]*Quantity)
FROM Orders AS O2 INNER JOIN [Order Details] As OD2
ON O2.[Order ID] = OD2.[Order ID]
WHERE YEAR(O2.[Order Date]) = 2017),0)
>SUM([Unit Price]*Quantity),"Down","Up") AS Movement
FROM Orders AS O1 INNER JOIN [Order Details] As OD1
ON O1.[Order ID] = OD1.[Order ID]
WHERE YEAR([Order Date]) = 2018
GROUP BY YEAR([Order Date]);
Neither of the above allows for exact ties of course, which would be returned as 'Up', but that's a remote possibility.