Crystal Reports 11 Hide field until formula is run - crystal-reports-xi

I have a report in Crystal Reports 11 that has 2 images at the top of the page in the header. I have a formula that runs down in the footer. I would like to hide/show these images based on the value of the formula but when the report loads, the images load before the formula runs so they don't display properly. Is there a way to delay load of something in the header until something has been run at the end? Basically, load an image at the end of the report running?
The scenario is a dual receipt/invoice statement. The formula balance owed resides in Footer Group Footer 3H. The text boxes are in Group Header 3a. At the time the report is run, #BalanceOwed shows a balance but when the report is fully run, #BalanceOwed is 0. So in this case, the text box Receipt should show vs. the text box Invoice and then it works in the opposite if #BalanceOwed is > 0.
I know how to suppress something based on values but not based on values that don't exist at the time the report builds the element to hide/display.
Thanks.
Jayson

Use the EvaluateAfter() function in the image selection formula. Give EvaluateAfter() the name of the formula in the footer that needs to run first.
You'll put the EvaluateAfter() in the conditional suppression formula of the field/image, at the top of the formula before any other logic.
EvaluateAfter() tells the crystal not to run the formula until after the specified formula has finished running.

Related

Inspecting text in Google Sheets from vlookup without destroying formula, text wrapping, or changing column width to "fit to data"?

This has been an issue I've lived with for a really long time, without ever really figuring out a reasonable solution. I feel like there must be one, however.
I do a lot of spreadsheet preparation for non-technical users. In my current situation, it involves a selection committee that needs to view candidates' submissions. The problem is, each candidate's responses vary quite a bit in length and size. I am using very basic VLOOKUP's to populate a series of columns so that when a given applicant is chosen from a dropdown menu.
Here is the dilemma, to me it feels like there must be a way to view the entire content of a vlookup result WITHOUT having to change row/column width/height to "fit to data" or some arbitrary huge number. For normal text boxes that get cut off, you can just double click the cell, and it neatly displays the entire text content for you. When I try to do this with a vlookup formula, double-clicking just displays the vlookup formula itself. The only way around this I've found is copying the cell, then doing paste-special and choosing "value only". But doing this destroys the vlookup formula, requiring a quick control-Z to undo afterwards -- something fine for me, but not something I can't reliably ask my end users to know to do.
Put succinctly, is there no other way to display/access the entire text content of a cell that is cutoff, if the content is the result of a v or hlookup formula? A way, that is, without value pasting over the formula, or having to adjust the column width and/or choose 'wrap text' and changing the row height?
I was hoping there might be some way to get the contents of the vlookup to appear in something like a tooltip popup if you hover over the cell? Or some other solution.
move your vlookup formula up a row like if its now in B2 and the output of vlookup is 1 column put this in B1:
={""; ARRAYFORMULA(IFNA(VLOOKUP(...)))}

Filter and Query formulas not working properly in Google Sheets

I have a problem with google sheets, where sometimes the filter function (green square) won't work in some rows, always the last ones, but not always the same quantity. Sometimes will load all of them, sometimes none. It doesn't throw an error, just leave blank cells.
Other error is with the query on the blue square, it has no conditions (its just =query(range) cause I want to bring all the data) the problem is what you see on yellow background (the yellow is just a conditional format), there is data to bring on the right, but doesn't load it on the left, it is just weird. Sometimes I load the formula again and it will load more rows, sometimes less rows.
Can you tell me if there is some way to solve it? it is just 150 rows, and I've worked with 1000 or more with these formulas, and over 12000 with query and filter.
Thanks in advance.
The pic:
Solved!
I had activated the iterative calculations on the Spreadsheet for some tests. It appears it limits the capacity of iteration of filter an query formulas.
Now it works like Christmas.
Thanks community

How to offset importrange() within an arrayformula()

I have two Google Sheets (separate documents) that contain information, let's call them Master & Source. Within Source I have an undefined range of cells that are in sorted order by date that I need to display within Master. Master is intended to have links to all the various Source sheets, in normal operation, I'll have multiple of these, so I can view all of the quick information about all of the Source sheets displayed conveniently in Master. Master contains a date range that starts before and ends after the date range from within Source (to accommodate other date ranges from other Source sheets).
My goal is to create a single cell formula that can be copied and pasted for each Source that I need to view in my Master that would fill the cells in columns before and after the date range from Source with the string "No Class" and all the cells that match the date range from Source would simply be a copy/reference to the matching cell from Source. This is the formula I came up with:
=ARRAYFORMULA(if({A1:Z1;A1:Z1;A1:Z1;A1:Z1;A1:Z1}<importrange(Link!B4,"Source!A1"),"No Class",if({A1:Z1;A1:Z1;A1:Z1;A1:Z1;A1:Z1}>Link!N4,"No Class",importrange(Link!B4,"Source!A1:Z99"))))
Link!N4 = Start Date
Link!B4 = hyperlink to the google sheet `Source`
Amazingly, it works quite well, except for one major drawback: the array of values from importrange are relative to the cell that the formula is in - aka, the range from Source starts at Master!A1 rather than starting at the first column that has the same date as Source!A1.
This is a screenshot of the result of my formula in Master. *EDIT: No Class has conditional formatting to make the font color match the fill, so you can't see it in this screenshot, but they are the dark grey cells.
And another screenshot, this time of the Source I'm trying to view.
I realize this approach might not be the only way (or might not work at all) but each time I try something else it always comes down to the same problem: how do I dynamically start the importrange at the first column that matches the date from Source using a formula that is in the first cell?
I found an acceptable workaround. This is by no means a solution to the problem of trying to offset data within an array, but it allows me to get what I needed to be done. This code needs to be filled using the fill handle (blue square on the bottom right of the selected cell). I'm adding this here in the event someone gets in a similar situation and needs an alternative way to look at the problem.
=iferror(if(importrange(Link!$B4,"Source!A1")>A2,{"No Class";"No Class";"No Class";"No Class";"No Class"},if(importrange(Link!$B4,address(1,COLUMN(A3)-match(importrange(Link!$B4,"Source!A1"),$A2:$Z2,0),4,TRUE,"Source"))=A2,importrange(Link!$B4,address(2,COLUMN(A3)-match(importrange(Link!$B4,"Source!A1"),$A2:$Z2,0),4,TRUE,"Source")&":"&address(5,COLUMN(A3)-match(importrange(Link!$B4,"Source!A1"),$A2:$Z2,0),4,TRUE)),"No Class")),{"No Class";"No Class";"No Class";"No Class";"No Class"})
A2 is the date of the column in master I'm trying to import into, it changes as your drag the fill handle.
A3 is the cell that the formula is currently in
This works by first checking iferror (but I'll come back to that).
Then, if the date in the same column as the formula is less than the start date "No Class" fills the column (hides dates prior to start date)
ELSE If the date in the same column as the formula is the SAME as the date in the column of the Source (offset by the number of columns away from the start date) then fill the column with the corresponding column from Source (aka, this fills one column at a time, rather than importing the entire range at once).
(Back to iferror) An error is returned for any columns that come after the end date - so iferror fills those columns with "No Class"

How to highlight entire column based on time value in Google Sheets

I have a google sheet where the columns are 15 min intervals from 8am to 6pm. I'm basically making a daily gant chart by 15 min intervals. Tasks are down the left-hand side. I fill in the cells for the task based on how long they should be in. Each task gets a different color. I've set the sheet to auto-update every min.
What I'd like to do is highlight the entire column based on the current time and the time value in the column itself to show where we are in the day. Later then I'd like to fine out what cell in that entire column has colored background and highlight the task in column A as it shows that's what task you should be working on.
Any thoughts on how to do this? Would I have to make a conditional on all 32 columns? What would that conditional look like? I'm using 12 hour not 24 hour clock.
Assuming you are using actual time values (not Text format) in B1:AO1, please try clearing formatting from ColumnsB1:AO, selecting them and Format, Conditional formatting..., Format cells if... Custom formula is and:
=and(B$1<=1*TEXT(now(),"HH:MM am/pm"),B$1>(1*TEXT(now(),"HH:MM am/pm")-1/96))
Then select fill of choice and Done.
For the "Later" part I am confused by the colouring you want as opposed to the colouring you have.

Getting length of filled column

I have some columns in Google Sheets and want to know that how many of the columns are filled e.g 100,220 or what ever.
How I can put this thing formula so that I don't have to count the columns or look up the columns count every time?
You can do this 2 ways
By formula in a cell or cells within a spreadsheet
By using Google-script for spreadsheets to add a menu item to your spreadsheet that, when clicked executes a script to output the result to a msgBox dialog box on your screen, or output the result to a cell within your spreadsheet.
Both methods are simple, and should require little research. If you require more help please comment back

Resources