Forum Discussion
Print for a date range
- Feb 28, 2023
If you've gotten rid of that top row that had only a few formulas in it, as well as both rows at the bottom that were not true data rows, then the formula below should work, and keep up with new rows at the top. However, I think you'll find that it works best to insert the new row just above row 3, not at the very top. At the very top, it will format itself based on the header row above, which you don't want to have happen.
This formula goes in cell A5 of the "Prt Date Rng" tab
=FILTER(tblQ1,(tblQ1[Date]>=Start)*(tblQ1[Date]<=Finish),"No Rows")
What you'll see there is that it no longer refers to the cell addresses, but rather to the table by name and the Date column by name.
Note: I've attached a slightly updated version of the older workbook, with the table modified (and an empty row waiting for you) and the new formula.
Regarding the $ symbol in a cell reference ( $A$3, $A3, A$3 😞 What these do, and it's significant, is to render the letter or the number (the column or the row reference, respectively) absolute rather than relative. Which means, as you copy a formula elsewhere, the parts of a cell reference that are absolute don't change, where the relative ones do, relative to the new cell. Here's a more complete description of how that works.
The time field is left out of the sort, because I may not always put a time in the time field as I enter partial new data to save time, and fill it in later. If I have Excel sort for me, it would change the physical order I placed them in, if all times are not filled in. If I were to use the sort feature and include time, when adding the normal way, I would still need to go to the bottom of the table to enter the latest row, would I not? That would be awkward. With that understanding, I chose to insert at the top instead.
I hadn't noticed the range was on a different sheet. I thought I was still on Q1. Oh well. Thank you. This is great. I just have four questions related to the "Print Date Range". Why is the time formatted as a decimal number? Can it not retain its normal format? Is there a way to keep the empty fields blank instead of inserting 0s in them? Where is the formula. I presume it is hiding somewhere. I can only see it in grey in the function field when I click on an empty comment field. I guess I do not know where to look. It is not under view code for the new sheet. Sorry I am so dense. I find Access much easier to understand.
UPDATE:
Since your copy was a couple of days behind, I copied the new sheet to my current WB. I then tried out the filter for Aug, Sep and Nov. It seemed to work fine on each until I got about half way through the list on each of the filters, then the dates formatted to 5 digit numbers. See attached. Now, when I open the document it complains of an external source which it cannot update. I suppose that is because I moved the new sheet from your file to my file. I see the formula is referencing your version of the file. I am unable to change the formula as I don't know where it is. Does the formula need to use the full path? Can't it work in context?
The time field is left out of the sort, because I may not always put a time in the time field as I enter partial new data to save time, and fill it in later. If I have Excel sort for me, it would change the physical order I placed them in, if all times are not filled in. If I were to use the sort feature and include time, when adding the normal way, I would still need to go to the bottom of the table to enter the latest row, would I not? That would be awkward. With that understanding, I chose to insert at the top instead.
You are perfectly free to go ahead and do it that way if it works for you.
I hadn't noticed the range was on a different sheet. I thought I was still on Q1. Oh well. Thank you. This is great. You're welcome.
I just have four questions related to the "Print Date Range".
1. Why is the time formatted as a decimal number? Can it not retain its normal format?
A. You're aware that underneath the date and time formats are decimal numbers, I presume. FILTER is returning the "raw data" that is underneath the surface. All you need to do is format the field as date or time, as desired. In this case, you might find it most convenient to just format the columns A as date and B as time and do so all the way down to whatever row would be needed to accommodate the largest output you're going be doing.
2. Is there a way to keep the empty fields blank instead of inserting 0s in them?
A. To my knowledge, that's endemic to empty comment fields coming through the FILTER function; I almost left the comments column out of the FILTERed report for that reason. If the 0s bother you, you can put a space into each of the comment fields where there is no comment (make that the "default" entry. That way it will be read as "blank" instead of zero. I did it in a few of the cells for 9/30 to show the result. (Personally, I'd just tolerate the 0s, but if this report is for the use of other people, I can see why that may not be a valid route to take.)
3. Where is the formula. I presume it is hiding somewhere. I can only see it in grey in the function field when I click on an empty comment field. I guess I do not know where to look.
A. Well, it's kind of hiding in plain sight. As l mentioned in my last reply that it's entered only one place, and that's in cell A5. The results "spill" to all needed rows and columns; and the formula appears greyed in all of them except for the one at the top left of the array.
It is not under view code for the new sheet. Sorry I am so dense. I find Access much easier to understand.
A. If you find Access easier to understand, if you understand and write SQL code in that app, then you will definitely be able to come to grips with these dynamic array functions. I do recommend--quite seriously--watching the YouTube video I linked to in my last post.
UPDATE:
Since your copy was a couple of days behind, I copied the new sheet to my current WB. I then tried out the filter for Aug, Sep and Nov. It seemed to work fine on each until I got about half way through the list on each of the filters, then the dates formatted to 5 digit numbers. See attached.
As noted above, you will need to format the date column as date, time column as time, so as to convert those five digit and decimal numbers to the dates and times they represent. I'm assuming you know how that formatting works, in the "Home" toolbar.
Now, when I open the document it complains of an external source which it cannot update. I suppose that is because I moved the new sheet from your file to my file. I guess I shouldn't have done that.
I don't know how you did the copy/move, but yes...the FILTER function in the new spreadsheet was referring back to the other file, the original, on your OneDrive. I've edited it so that it now refers to the Q1 sheet. Again, watch the YouTube video to demystify how FILTER works. You might actually end up liking it more than Access. (Smiley face)
- mathetesFeb 28, 2023Silver ContributorYou are most welcome. It's been a privilege to work with you on it. Appreciate your patience as well.
- wcstarksFeb 28, 2023Iron ContributorI tried viewing and adding new rows at the bottom. I find it too awkward. When I open the file, I really need to see the most current at the top. I work with this several times a day, as you can see from the number of entries per day. I also often view it between additions. So, I really need to use the sheet in this sort order. However, I really appreciate the new "report" sheet. It will be very useful. Thank you.
- mathetesFeb 28, 2023Silver Contributor
You may recall that I needed row 2 hidden to preserve formatting when I add next to the header.
I did not recall that, but it made sense as soon as I read it. It was the same reason I suggested using a row lower. And I'm glad that the formula works now and adjusts as new rows are added.
Nevertheless, on the attached I'm making one more effort to convince you to use the bottom row for new entries. You may not have realized you can "Freeze" the top of a workbook or worksheet, so that the column headings remain visible no matter how far down you are on the table. Here I've re-sorted the data so that the latest are at the bottom, so all you need to do is add a row. No "insert" needed.
I also took a stab at revising the formulas that, if I'm reading them correctly, give the averages for the last 7 or 90 days.....
You are, of course, totally free to keep going as you have, to ignore my OCD-ness on the topic. (smiley face)
- wcstarksFeb 28, 2023Iron Contributor
You may recall that I needed row 2 hidden to preserve formatting when I add next to the header. I copied your new formula into my current version and tried it with row 2 hidden with no data and the report sheet seems to work OK anyway. Thank you. I have attached the current version to reference.
- mathetesFeb 28, 2023Silver Contributor
If you've gotten rid of that top row that had only a few formulas in it, as well as both rows at the bottom that were not true data rows, then the formula below should work, and keep up with new rows at the top. However, I think you'll find that it works best to insert the new row just above row 3, not at the very top. At the very top, it will format itself based on the header row above, which you don't want to have happen.
This formula goes in cell A5 of the "Prt Date Rng" tab
=FILTER(tblQ1,(tblQ1[Date]>=Start)*(tblQ1[Date]<=Finish),"No Rows")
What you'll see there is that it no longer refers to the cell addresses, but rather to the table by name and the Date column by name.
Note: I've attached a slightly updated version of the older workbook, with the table modified (and an empty row waiting for you) and the new formula.
Regarding the $ symbol in a cell reference ( $A$3, $A3, A$3 😞 What these do, and it's significant, is to render the letter or the number (the column or the row reference, respectively) absolute rather than relative. Which means, as you copy a formula elsewhere, the parts of a cell reference that are absolute don't change, where the relative ones do, relative to the new cell. Here's a more complete description of how that works.
- wcstarksFeb 28, 2023Iron ContributorHI. I deleted the extra rows at the bottom and reset the top and bottom rows. Then I inserted a new row3 at the top and went back to the report sheet. The top row incremented to 4, but the bottom row incremented by one staying inline with the new bottom row. I see no practical way of entering at the bottom. It is just too awkward to have to navigate there for each row I add. Then I would also need to have the time column part of the sort, which it is not at this time. Doesn't the use of the "$" help with keeping the formula inline with the growth of the rows? I am not very familiar with the meaning of the $ in formulas.
- mathetesFeb 27, 2023Silver Contributor
I am trying to understand the formula. It starts at A24 and ends at T2401. It appears that the beginning parameter moves down as new rows are inserted and the ending parameter remains the same (causing it to effectively move up)
The copy I have has different start and end rows, since you've been adding new rows in yours. Nevertheless, I think that I understand what's happening, and, yes, it is caused by your entering new rows at the top. It's also complicated, I think by the fact (at least on the copy I have) you have extraneous rows at the top AND a row at the bottom, rows that contain formulas, but not the data to which those formulas refer. You also have an extra cell at the very bottom that does an average of the Glucose column.
From a sheer data table point of view, my sense is that if you made this a cleaner table--i.e., eliminated those two incomplete rows and the Glucose average calc at the bottom--and started making all entries at the bottom, then the formula, once adjusted to the top and bottom, would automatically track with each new entry, each new row. And I believe the formulas would automatically cascade into the new rows as the raw data to which they apply is added.
So my recommendation would be:
- first, eliminate those "incomplete" rows at the top and bottom, eliminate also the single cell that computes the average Glucose. [That latter can be done anywhere in the workbook; it does NOT need to be at the bottom of that column.]
- second, adjust the formula in the Print Range sheet to the new top and bottom rows, whatever they are
- third, try inserting and entering your new data at the top. IF that works, if the formula accepts that, then you're home free. If it doesn't, see if you can adapt your practices to entering new rows at the bottom of the table.
Let me know if those suggestions make sense, and the results.
- mathetesFeb 21, 2023Silver ContributorI’m sorry. I’m on an overseas trip, have been since Feb 16, and won’t return till next week. I’ll try to answer then more fully.
- wcstarksFeb 16, 2023Iron ContributorThank you for your help. It is greatly appreciated and does what I need it to do. I am trying to understand the formula. It starts at A24 and ends at T2401. It appears that the beginning parameter moves down as new rows are inserted and the ending parameter remains the same (causing it to effectively move up). I guess I will need to keep updating the formula before each time I use it to account for new rows added. I don't suppose there is a way to generalize it to have it always remain on A5 and the last row, to avoid the need to update the parameters? I will look at the video. Thanks again.