Home > Back-end >  Virtually blank column in array?
Virtually blank column in array?

Time:09-27

I use this formula in Google Sheets:

=SORT({SORT({'Discord-D'!B2:B, 'Discord-D'!A2:A, ARRAYFORMULA(IF('Discord-D'!G2:G = "", "", IF('Discord-D'!C2:C <> "", "Removed", "Processing"))), 'Discord-D'!H2:H, ARRAYFORMULA(IF('Discord-D'!C2:C <> "", 'Discord-D'!G2:G, IFERROR(REPLACE('Discord-D'!G2:G, LEN('Discord-D'!G2:G)-3, 4, "****")))), 'Discord-D'!I2:I}, ROW('Discord-D'!A2:A), FALSE); SORT({'Facebook-D'!B2:B, 'Facebook-D'!A2:A, ARRAYFORMULA(IF('Facebook-D'!E2:E = "", "", IF('Facebook-D'!C2:C <> "", "Removed", "Processing"))), 'Facebook-D'!F2:F, ARRAYFORMULA(IF('Facebook-D'!C2:C <> "", 'Facebook-D'!E2:E, IFERROR(REPLACE('Facebook-D'!E2:E, LEN('Facebook-D'!E2:E)-3, 4, "****")))), 'Facebook-D'!G2:G}, ROW('Facebook-D'!A2:A), FALSE); SORT({'Instagram-D'!B2:B, 'Instagram-D'!A2:A, ARRAYFORMULA(IF('Instagram-D'!E2:E = "", "", IF('Instagram-D'!C2:C <> "", "Removed", "Processing"))), 'Instagram-D'!F2:F, ARRAYFORMULA(IF('Instagram-D'!C2:C <> "", 'Instagram-D'!E2:E, IFERROR(IF(LEN(REGEXEXTRACT('Instagram-D'!E2:E, "com/(. )")) > 4, REPLACE('Instagram-D'!E2:E, LEN('Instagram-D'!E2:E)-3,4, "****"), REPLACE('Instagram-D'!E2:E, LEN('Instagram-D'!E2:E)-1,2, "**"))))), 'Instagram-D'!G2:G}, ROW('Instagram-D'!A2:A), FALSE); SORT({'TikTok-D'!B2:B, 'TikTok-D'!A2:A, ARRAYFORMULA(IF('TikTok-D'!E2:E = "", "", IF('TikTok-D'!C2:C <> "", "Removed", "Processing"))), 'TikTok-D'!F2:F, ARRAYFORMULA(IF('TikTok-D'!C2:C <> "", IFERROR(IF(LEN(REGEXEXTRACT('TikTok-D'!E2:E, "https://www.tiktok.com/@(.*?)/")) = 4, REPLACE('TikTok-D'!E2:E, LEN("https://www.tiktok.com/@" & REGEXEXTRACT('TikTok-D'!E2:E, "https://www.tiktok.com/@(.*?)/"))-1, 2, "**"), REPLACE('TikTok-D'!E2:E, LEN("https://www.tiktok.com/@" & REGEXEXTRACT('TikTok-D'!E2:E, "https://www.tiktok.com/@(.*?)/"))-3, 4, "****"))), IFERROR(IF(LEN(REGEXEXTRACT('TikTok-D'!E2:E, "https://www.tiktok.com/@(.*?)/")) = 4, REPLACE(REPLACE('TikTok-D'!E2:E, LEN("https://www.tiktok.com/@" & REGEXEXTRACT('TikTok-D'!E2:E, "https://www.tiktok.com/@(.*?)/"))-1, 2, "**"), LEN('TikTok-D'!E2:E)-3, 4, "****"), REPLACE(REPLACE('TikTok-D'!E2:E, LEN("https://www.tiktok.com/@" & REGEXEXTRACT('TikTok-D'!E2:E, "https://www.tiktok.com/@(.*?)/"))-3, 4, "****"), LEN('TikTok-D'!E2:E)-3, 4, "****"))))), 'TikTok-D'!H2:H}, ROW('TikTok-D'!A2:A), FALSE); SORT({'YouTube-D'!B2:B, 'YouTube-D'!A2:A, ARRAYFORMULA(IF('YouTube-D'!E2:E = "", "", IF('YouTube-D'!C2:C <> "", "Removed", "Processing"))), 'YouTube-D'!G2:G, ARRAYFORMULA(IF('YouTube-D'!C2:C <> "", 'YouTube-D'!E2:E, IFERROR(REPLACE('YouTube-D'!E2:E, LEN('YouTube-D'!E2:E)-3, 4, "****")))), ARRAYFORMULA(IFERROR(REPLACE('YouTube-D'!F2:F, LEN('YouTube-D'!F2:F)-3, 4, "****")))}, ROW('YouTube-D'!A2:A), FALSE)}, 1, FALSE)

The YouTube array contains an extra column compared to the rest. Initially, it would fail because not all the arrays had the same number of columns in them. I solved it by inserting a blank column in each of the sheets and referencing that one (the last column reference in each array except YouTube, so 'Discord-D'!I2:I, 'Facebook-D'!G2:G, 'Instagram-D'!G2:G and 'TikTok-D'!H2:H). Is there a better way I can achieve this (for example by creating a virtually blank column instead of actually needing to have one in reality)?

CodePudding user response:

there are various ways how to create a virtual column (or row). for example, to avoid array errors we can create a virtual array manually like:

={A1:A5, {"";"";"";"";""}}

to do it dynamically we can use divide by zero error and turn it into blanks:

=IFERROR(ROW(A2:A)/0, )

another way is within query where we can insert virtual column as:

=QUERY(A:C, "select A,B,C,' ' label ' '''")

but you can do it even with a single if:

=IF(A2:A,,) 

and a lot of people use a sequence with substitute:

=SUBSTITUTE(SEQUENCE(ROWS(A2:A), 1, 1, 0), 1, )

of course, 2nd, 4th and 5th fx need ARRAYFORMULA wrapping

another popular way is to reference an existing column that is for sure empty like X:

={A:C, X:X}

and in some cases, you can even reference a non-existent column.
for example, if your sheet has A-Z columns you can use:

={A:C, XX:XX}

and lambda lovers will appreciate:

=INDEX(LAMBDA(x, IFERROR(x/0))(A2:A))

or:

=INDEX(LAMBDA(x, x)(IF(A2:A,,)))
  • Related