I have a column with hyperlinks to other parts of the same spreadsheet and I want this column to be visible inside the program, but hidden when printed: it should not take up space.

The only solution I found is to right-click the column header (so that the whole column is selected), go into formatting, Cell protection tab and tick "Do not print"; but this only hides the column values from printing, not the whole column. As a result the column is being printed (at least according to the print preview) empty, taking up space on the paper sheet.

The column I'm talking about is the last one on the right; is there a solution that can be applied to columns in the middle of the document as well?


1) Select the data you want printed

2) Select Format -> Print Ranges -> Define

3) Print!

Note that if you create a print range with non contiguous columns these will be on separate pages. Ex.: If you want to print columns A:C and E:H, A:C will be on page 1 and E:H will be on page 2.


As cybernetic.nomad explains, the native options for controlling complex print ranges are limited. If the column you don't want printed is on the end, just define the print range to exclude it (you can set the print range in the Format tab). If one or more non-print columns are in the middle, you need to use a workaround to do what you want. Here are two options:

  1. At print time, you can hide the columns you don't want to print. Then unhide them after. You could automate the task by recording a macro that hides the selected columns, prints, and unhides them, all with one shortcut.

  2. Create a separate version, perhaps on another sheet, that you print. On the print version, use simple cell references to display only the selected columns. This takes only a minute to set up:

    In say A1 of the print sheet, put a cell reference to the first value of the actual sheet. Drag that across to replicate the entire top row. Delete the columns you don't want printed. Then select all the cells in the row and drag down to replicate all the rows you need. The actual sheet can change, and the print version will reflect whatever is there.

    You can pre-populate the print sheet with an arbitrary large number of rows to handle a changing amount of rows. Instead of just referencing the cell, use an IF test for a blank on the real sheet, displaying the cell value, or a null if the actual cell is empty.

    If you go this route, you can set the print range to the portion needed in whole-page increments (partial pages will print based on the displayed content). Adjust the print range if the actual data changes enough to change the number of pages you print.

  • Thank you for the thorough explanation, but I'm preparing an inventory to track item maintenance events of lots of items, and I'm deciding whether to make it in Calc or write a whole program; thus I will go for Calc if it proves to be easy to realize — this issue on printing may not be the only one I will face. – watery Dec 2 '18 at 13:39

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.