Recent Discussions
Power Query - SKU Generator
Hi, I am using MacBook Excel Version 16.102.2 I am trying to build a Power Query - that build out a SKU (e.g Column H). Based on the products I've entered in Column E and the Size Range chosen in Column F. I've managed to build a power query - but when I refresh nothing happens / updates. Some screenshots attached of my workings.17Views0likes2CommentsComcast email transition to Yahoo
So here is my problem and I have been battling this for 5 days now and Xfinity and Yahoo support keep striking out. I can access my account just fine in Outlook Classic. If I slide the slide over to the new Outlook nothing gets transferred or setup. If I try and add my account manually using an app password it gets to a screen where it states syncing with one drive then I get a screen where it fails and states I need a App Password. I have put in the password multiple times and it seems there is issue is with syncing the mail with one drive in the new Outlook.17Views0likes1CommentNeed help with a nested IF w/ISNA vlookup formula
A formula that I have been using for nearly 4 years has decided to stop working and I don't know how to fix it. Everything I have tried fails miserably. The formula is this: =IF(OR($L5="Vacant",$L5="Unfunded",$L5="Intern"),$L5,IF(ISNA(VLOOKUP($M5,ActiveFTE[Employee ID],1,FALSE)),"Term","Yes")) Where M5 is the employee ID number. an the Active FTE is the current list of employees. In the past if the person was no longer in the Actice list it would put Term and if it was there, Yes. now, it returns #N/A - the ONLY thing that has changed from the last file and this file is the list of active employees. if I remove the first IF/OR part of the formula it works beautifully, but I also need to flag vacant and unfunded positions. I've tried ISNA,. IFNA, IFERROR as well as putting the IF/OR at the end instead of the beginning. otherwise, any suggestion is greatly appreciated cathy23Views0likes1CommentDelete cells with 3 consecutive consonants
I submitted a question a little while back asking how to delete cells with exactly 3 consonants. The response I had was a huge help, but now I'm faced with a similar problem: How do I sort words by consecutive consonants? And if that cannot be achieved, how can I instead delete cells from a sheet in which a word has 3 consecutive consonants?Solved78Views0likes2CommentsExcel formula to take time off from a time range
I am trying to get Cell D2 to give me a result based on the result in C2. I have 4 different time "zones" Each time slot has an amount of time taken off so if the employee starts at 7am and finishes at 11am they would be in the system for 4 hours. On 4 hours they get a 15 minute break and so will only be paid for 3 hours and 45 minutes. the formula works fine with one instance but as soon as I string the rest it goes hay wire. Any help / advise would be greatly appreciated. The formula I am trying to run is as follows: =IF(AND(C2>=TIME(4,0,0),C2<=TIME(5,59,0))*C2-TIME(0,15,0),AND(C2>=TIME(6,0,0),C2<=TIME(7,59,0))*C2-TIME(0,30,0)*AND(C2>=TIME(8,0,0),C2<=TIME(8,59,0))*C2-TIME(0,60,0)*AND(C2>=TIME(9,0,0),C2<=TIME(11,59,0))*C2-TIME(0,90,0))51Views0likes3CommentsAdd a page title to a OneNote page using Power Automate
Hello, I have set up a flow in Power Automate to create a new page in OneNote. It extracts information from an email, including the information that I want to be the title of the new page in OneNote. The flow creates the new page in the correct notebook and section, but the page is untitled. My flow correctly composes the title in a Compose action named PageTitle. The parameters for the action "Create page in a section" only include the following Notebook Key Notebook section Page Content AI suggested that I add the page title to Page Content inside either an html h1 tag. I tried that. It does not turn the text inside the tag into the title of the page. It simply formats the text inside the contents of the OneNote page. I also tried using the html title tag. That didn't work either, and the PageTitle wasn't even output into the contents of the OneNote page, so it was just empty. I would appreciate suggestions for how to do this. I cannot see either a OneNote tag or Power Automate tag for this discussion. If I am posting my question in the wrong discussion place, please direct me to the right place. Thanks.Solved115Views0likes3CommentsUnified Company Calendar for Mixed Microsoft 365 and Non-365 Users – 2025
Seeking a Shared Calendar Solution for Mixed Microsoft 365 and Non-365 Users I’m working on a solution to create a shared company calendar that everyone in our organization can view, while keeping editing permissions limited to a few selected individuals. The challenge: Some of our team members do not use Microsoft 365, and I’d like them to still be able to subscribe to or view the calendar and receive updates. Ideally, this should work without requiring full Microsoft accounts. I initially considered using an ICS-based calendar, but it seems Microsoft 365 Group calendars don’t support sharing via ICS links. I also explored creating a Group calendar as suggested in other threads, but ran into issues making it accessible to external users or those without 365 accounts. For context, I’m a Global Admin, so I have full access to configure settings in the Microsoft 365 Admin Center and Exchange if needed. We’re a small business, and our main goal is to have a centralized calendar for vacation schedules and company-wide events. It should be simple to access and maintain, with a focus on collaboration and accessibility across the board. What I’m looking for: A calendar that’s viewable by all, including non-M365 users Editable only by a few delegated team members Compatible with Microsoft 365, but not dependent on it for basic access Any tools, workarounds, or best practices that have worked for others in similar hybrid environments50Views0likes2CommentsBuilding relationships in data model to leverage power pivot - circumventing unique key ID issue
When building relationships between two data tables in the data model of excel, you require a unique ID / key to relate the two datasets. This makes sense but I find it has an issue: It requires you to reduce the entirety of your dataset down to unique ID's in one of your tables so that it can do the 'one to many' relationship build. If you don't have unique ID's / key, the relationship between two tables often doesn't work. Yes you can use an intermediary table with unique ID's to link the two complete tables, but when using that intermediary table I find you are limited in what additional data rows you can bring into the combined power pivot table to provide context to the relationship. Once you start bringing in contextual rows from the separate tables, there ends up being a lot of repeated values for any numerical figure from the other table, which you are trying to aggregate. An example below of the power pivot table result (data from table 1 in blue, from table 2 in green) Product ID (Unique Key) Service Line Sales Amount COGS 169AKY T Shirts $1,000 $7,500 169AKY Sweaters $2,000 $7,500 169AKY Socks $3,000 $7,500 169AKY Turtle necks $4,000 $7,500 169AKY Pants $5,000 $7,500 COGS from table 2 also has the data broken out by Service Line (T-shirts, Sweaters, etc.), but will only show an aggregate COGS value for all service lines for each unique product ID, instead of breaking it out by Service Line. This is because the Service Line column is being inserted into the power pivot table from table 1, it breaks out sales by Service Line. If you insert the Service Line data column into the power pivot from table 2, COGS would be broken out by Service Line, and only an aggregate for sales would be produced. Ideally the power pivot would display sales AND COGS broken out by Service Line (and Product ID). Is there a best practice for building relationships (unique ID's) between data tables: Without reducing the richness / variety of columns and data in your original tables (when creating the unique ID)? Maybe 'group by' function in power query to obtain unique ID's before building the relationship? With retaining the ability to slice and dice the data by different characteristics (assuming they are present in both source tables) and have that detail presented in the power pivot. Thanks for the help! The humble Apprentice11Views0likes0CommentsMatch value in cells, perform formula
I have a spreadsheet with a list of items and their costs. I have another section with a list of retailers and a hypothetical discount. How could I write a formula that matches the value in A2 with Column F and then multiplies the value in C2 by corresponding value in Column G? In this example, I would want to find the value of A2 (Kohl's) in column F, and then multiply the cost of the shirt, C2, by the discount % Kohl's offers, G4. I don't want to have to do multiple manual formulas of = C2 * G4, it's a big spreadsheet.31Views0likes1CommentThe Diagonal Suite: Gentle thunking goes a long way!
I've become a big advocate for gentle thunking - using thunks to delay eager evaluation wherever possible in generalized Lambda development. The timings are quicker and the logic is cleaner. On the other hand, thunking the results of MAP, BYROW, or BYCOL - especially when it leads to rows of thunks - tends to introduce recombination overhead and complexity. I think thunking is often dismissed as “too complex,” and that’s understandable if someone’s first exposure involves unwrapping a row of thunks. When used gently thunking becomes indispensable. Typically, I introduce the thunks after the initial benchmarking to see the difference in the calculation times and the after is always quicker. To illustrate, I’ll share The Diagonal Suite - a collection of functions where thunking is used at every opportunity. Simple, clean, deferred logic. What are your thoughts on gentle thunking? Where have you found it helpful/harmful in your own Lambda development? //The Diagonal Suite - Version 1.0 - 10/27/2025 //Author: Patrick H. //Description: Directional traversal and diagonal logic for 2D arrays. // Functions: // • Traverseλ - Directional traversal engine // • ByDiagλ - Diagonal-based aggregation // • DiagMapλ - Wrapper for diagonal matrix extraction // • DiagIndexλ - Targeted diagonal extraction // • Staircaseλ - Construct diagonal staircases from a vector or 2D array //──────────────────────────────────────────────────────────── //------------------------------------------------------------------------------------------- //Traverseλ - Directional Axis Remapper //------------------------------------------------------------------------------------------- //The selected axis is remapped to the top-left traversal order. //Accepted directions: // "NE" or 1 → Northeast (↗) // "SE" or 2 → Southeast (↘) // "SW" or 3 → Southwest (↙) //Parameters: //array → 2D input array (scalars not accepted) //new_axis → Axis direction ("NE", "SE", "SW" or 1–3) Traverseλ = LAMBDA( array, new_axis, //Input validation IF(OR(ROWS(array)=1,COLUMNS(array)=1), "#2D-ARRAY!", IF(AND(ISNUMBER(new_axis),OR(new_axis<=0,new_axis>3)),"#AXIS!", LET( //Dimensions i, ROWS(array), j, COLUMNS(array), //Axis traversal indices (deferred) x_NE, LAMBDA(SEQUENCE(j,,1,0)*SEQUENCE(,i)), y_NE, LAMBDA(SEQUENCE(j,,j,-1)*SEQUENCE(,i,1,0)), x_SE, LAMBDA(SEQUENCE(i,,i,-1)*SEQUENCE(,j,1,0)), y_SE, LAMBDA(SEQUENCE(i,,j,0)+SEQUENCE(,j,0,-1)), x_SW, LAMBDA(SEQUENCE(j,,i,0)+SEQUENCE(,i,0,-1)), y_SW, LAMBDA(SEQUENCE(j,,1)*SEQUENCE(,i,1,0)), //Axis mode selection mode, IF(ISNUMBER(new_axis),new_axis, SWITCH(new_axis,"NE",1,"SE",2,"SW",3,1)), //Index selection x, CHOOSE(mode,x_NE,x_SE,x_SW), y, CHOOSE(mode,y_NE,y_SE,y_SW), //Unwrap indices and get results result, INDEX(array,x(),y()), result ) ))); //------------------------------------------------------------------------------------------- //ByDiagλ - Diagonal-based aggregation //------------------------------------------------------------------------------------------- //Apply an ETA function or Lambda to diagonals //Parameters: //array → 2D input array (scalars not accepted) //[function] → ETA function or Lambda applied to diagonals //[row_wise_stack?] → Optional: Display results as a vertical stack ByDiagλ = LAMBDA( array, [function], [row_wise_stack?], //Check array input ValidateDiagλ(array,,function,row_wise_stack?, LET( //Optional parameters No_Function, ISOMITTED(function), No_row_wise_stack,ISOMITTED(row_wise_stack?), //Dimensions i, ROWS(array), j, COLUMNS(array), //Diagonal count k, MIN(i,j), //Indices - deferred r, LAMBDA(SEQUENCE(k)*SEQUENCE(,j,1,0)), y, LAMBDA(SEQUENCE(k)+SEQUENCE(,j,0,1)), c, LAMBDA(IF(y()>j,NA(),y())), //Unwrap indices, shape, and aggregate result, IFNA(INDEX(array,r(),c()),""), shaped, IF(No_row_wise_stack,result,TRANSPOSE(result)), final, IF(No_Function,shaped, IF(No_row_wise_stack,BYCOL(shaped,function), BYROW(shaped,function))), final ))); //------------------------------------------------------------------------------------------- //DiagMapλ - Wrapper (Calls ByDiagλ) to extract diagonals as 2D matrix //------------------------------------------------------------------------------------------- //Calls ByDiagλ to extract the diagonals from a 2D array. //Parameters: *Please see ByDiagλ for descriptions.** DiagMapλ = LAMBDA( array, [row_wise_stack?], ByDiagλ(array,,row_wise_stack?) ); //------------------------------------------------------------------------------------------- //DiagIndexλ - Targeted diagonal extraction //------------------------------------------------------------------------------------------- //Extract a diagonal or anti-diagonal vector from a 2D array. //Parameters: //array → 2D input array (scalars not accepted) //col_index → Column number to start from. Negative = anti-diagonal DiagIndexλ = LAMBDA( array, col_index, //Input checks ValidateDiagλ(array,col_index,,, LET( //Dimensions i, ROWS(array), j, COLUMNS(array), //Diagonal direction: +1 = SE, –1 = SW s, SIGN(col_index), //Determine diagonal length based on bounds k, IF(s>0, MIN(i, j + 1 - col_index), MIN(i, ABS(col_index))), start, IF(s<0,ABS(col_index),col_index), //Indices - deferred x, LAMBDA(SEQUENCE(k)), y, LAMBDA(SEQUENCE(k,,start,s)), //Unwrap indices and extract vector deliver, INDEX(array,x(),y()), deliver ))); //------------------------------------------------------------------------------------------- //Staircaseλ — Construct diagonal staircases from a vector or 2D array //------------------------------------------------------------------------------------------- //Parameters: //array → Input array (flattened to vector row-wise) //block_size → Number of rows/columns per staircase block //[block_offset] → Optional padding between staircases //[IsHorizontal?] → Optional toggle for column-wise orientation //[IsAntiDiag?] → Optional toggle to display staircase anti-diagonal. Staircaseλ = LAMBDA( array, block_size, [block_offset], [IsHorizontal?], [IsAntiDiag?], //Check inputs ValidateStaircaseλ(array,block_size,block_offset, LET( //Check optional parameters no_Block_Offset, ISOMITTED(block_offset), zero_Offset, block_offset=0, col_offset, IF(No_Block_Offset,0,block_offset), IsVertical?, ISOMITTED(IsHorizontal?), Not_Anti_Diag, ISOMITTED(IsAntiDiag?), //Convert to vector and get dimensions flat, TOCOL(array), k, COUNTA(flat), seq, LAMBDA(SEQUENCE(k)), V, TOROW(EXPAND(WRAPROWS(seq(),block_size),, block_size+block_offset,0)), width, COLUMNS(V), //Anchors and indices - deferred i, LAMBDA(SEQUENCE(block_size)*SEQUENCE(,width,1,0)), col_arr, LAMBDA(IF(Not_Anti_Diag,SEQUENCE(,width), SEQUENCE(,width,width,-1))), j, LAMBDA(MOD(col_arr(),block_size+block_offset)), j_, LAMBDA(IF((no_Block_Offset)+(zero_Offset), IF(j()=0,block_size,j()),j())), idx, LAMBDA(IF(i()=j_(),V,NA())), //Obtain results, shape, and calculate result, DROP(IFNA(INDEX(flat,idx()),""),,-col_offset), final, IF(IsVertical?,TRANSPOSE(result),result), final ))); //---------------------Error Handling & Validation--------------------------- //Validates inputs for Staircaseλ. Please see Staircaseλ for parameter //descriptions. ValidateStaircaseλ = LAMBDA( array, block_size, [block_offset], [on_valid], LET( //Checks NotArray,TYPE(array)<>64, Invalid_block_size, OR(ISTEXT(block_size),block_size<=0,block_size>COUNTA(array)), Invalid_block_offset, OR(ISTEXT(block_offset),block_offset<0), //Logic gate IF(NotArray, "#NOT-ARRAY!", IF(Invalid_block_size, "#BLOCK-SIZE!", IF(Invalid_block_offset,"#BLOCK-OFFSET", on_valid)))) ); //---------------------Error Handling & Validation--------------------------- //Validate inputs for ByDiagλ, DiagMapλ, and DiagIndexλ. //*Please see those functions for parameter descriptions.* ValidateDiagλ= LAMBDA( array, [col_index], [function], [row_wise_stack?], [on_valid], LET( //---Checks--- //Array input IsArray?, TYPE(array)=64, Not_Array, NOT(IsArray?), //Col_index No_Col_Index, ISOMITTED(col_index), Col_Index_Included, NOT(No_Col_Index), Not_Valid_Col_Index?, NOT(AND(col_index<>0, ABS(col_index)<=COLUMNS(array))), //Function No_Function, ISOMITTED(function), Function_Included, NOT(No_Function), Invalid_Function?, AND(ISERROR(BYROW({1,1},function))), //Shaping input RowWiseStack?, NOT(ISOMITTED(row_wise_stack?)), //Deterine which function is being validated DiagIndex, Col_Index_Included, ByDiag, AND(No_Col_Index, Function_Included), DiagMap, AND(No_Col_Index, No_Function), //Logic gates //DiagIndexλ a, IF(Not_Array, "#NOT-ARRAY!", IF(Not_Valid_Col_Index?,"#COLUMN-INDEX!", on_valid)), //ByDiagλ b, IF(Not_Array, "#NOT-ARRAY!", IF(Invalid_Function?, "#FUNCTION!", on_valid)), //DiagMapλ c, IF(Not_Array, "#NOT-ARRAY!", on_valid), //Logic gate selection decide, IF(DiagIndex,a, IF(DiagMap,c, IF(ByDiag,b, "#UNROUTED!"))), decide )); //End of The Diagonal Suite - Version 1.0 //Author: Patrick H.181Views1like8CommentsMicrosoft 365 Companion Apps Fail to Impress
Microsoft 365 Companion Apps are being deployed to Windows 11 PCs now. The apps don’t seem to add much if any value over standard Microsoft 365 apps like Outlook and OneDrive. With that thought in mind, we move to unclutter PCs by either blocking the installation of the companion apps or stopping the apps starting up to take over valuable toolbar space. https://office365itpros.com/2025/11/05/companion-apps-dump/8Views0likes0CommentsSORTBY newb... Other solutions don't appear to apply??
Hello all! Okay, here is the situation. I have an Excel spreadsheet and each row has a dropdown that allows you to set the priority of the task. The dropdown has approximately six separate items (Urgent, High, Medium, Low, Complete, Review, etc.). I set up a formula to change the row color according to the dropdown (previously they were doing it manually) and it works great. But I also need the entire sheet to sort by the dropdown selection, i.e., it needs to group them by the dropdown selection and order them; all Urgent item rows are at the top of the sheet, High are next, Medium next, etc. SORTBY seems like it can accomplish this, but every example I have seen is dealing with a small range within the sheet and not sorting the order of entire rows. The end result I am looking for is to group rows in a specific order according to what was selected in their individual dropdown and sort those rows. I've seen great examples, but they all seem to just be sorting information in a small range within the sheet and not ordering rows. Thank you for any suggestions / assistance you can provide and I'm looking forward to learning!56Views0likes4CommentsEXCEL Crashes while opening External Data connections workbook
Hi, We have a custom COM Add-in for Excel, and it connects to an external data connection. While opening the custom workbook, the connection was established successfully, and data was refreshed. But, Excel crashed immediately without any error message. Checked event viewer logs and found the error below: Using the link below, I reverted the MS Office to an earlier version (16.0.19029.20136) from the recent release on my laptop. After reverting the Excel, the issue was resolved. But I don't want to turn off MS Office automatic updates. https://support.microsoft.com/en-us/topic/how-to-revert-to-an-earlier-version-of-office-2bd5c457-a917-d57e-35a1-f709e3dda841#:%7E:text=Revert%20to%20the%20previous%20version%20of%20Office%201,3%20Step%203%3A%20Disable%20automatic%20updates%20for%20Office Please suggest any other resolution to resolve the issue. Are there any known issues in the recent release (16.0.19231.20216)?77Views0likes2CommentsTeams on Android - select Bluetooth device (from multiple active connections)
While working from home, I need go to pick up my son from school. Using Android Teams application, and while on a teams meeting or a teams call, my headset stays connected until I start my car engine. This is the time when sporadically the app switches me to car Bluetooth or keeps me connected on the headset. The options I see on Android teams app while I have multiple active Bluetooth connection are: Device Speaker Bluetooth Audio Off If Teams already switched me from headset to car Bluetooth the only way I can get back the sound on the headset is from car menu (to disconnect car from phone), or from Android menu (disconnect phone from car) , but there is no control in Teams app. My ask for the community: should we be able to see all Bluetooth active connections to choose from and get control back?11KViews2likes2CommentsImported data pertaining to date not working with SUMIFS
I have been struggling to get SUMIFS to work by returning an amount based on two criteria, name of customer and date range for invoices within a calendar month. Here is the formula: =SUMIFS(ActRevMth[[#Headers],[Amount]],ActRevMth[[#Headers],[Name]],Revenue!B13,ActRevMth[[#Headers],[Date]],">="&Revenue!E3,ActRevMth[[#Headers],[Date]],"<="&Revenue!F3) The cell in orange is where the formula sits and its criteria are in column B in yellow "name" and Date in column E which is 7/1/2025 shown as "Jul-25". This is the data table I'm trying to test pulling the figure $131,849.00 from. The Date column was delimted and forced into MDY using text to columns. My thanks to any advice anyone has...65Views0likes4CommentsMicrosoft Won’t Dump Outlook for a New AI Client
A recent report says that new Microsoft leadership wants to reimagine Outlook with lots of many AI features to make the client much more of an effective assistant. While this might be true, it doesn’t mean that New Outlook is dead. However, there’s a bunch of uninformed commentaries out there alleging that Microsoft will change course dramatically. I think there is little chance that this will happen. https://office365itpros.com/2025/11/04/new-outlook-not-dead/35Views1like1Comment
Events
Recent Blogs
- Bug Name Issue Fixed Undo/Redo don’t work for Bring To Front and Send To Back commands. In Form/Report Design view, after executing a Bring To Front or Send To Back command...Nov 05, 202536Views1like0Comments
- 2 MIN READWhy Microsoft 365 Certified Apps and Agents Matter for IT Admins As an IT Admin, you're constantly balancing innovation, security, and user productivity. With the growing ecosystem of apps/age...Nov 04, 2025275Views0likes0Comments