Options
Patrick Bridges ✭
10/17/18 edited 12/09/19 in Formulas and Functions
Are there Smartsheet functions for enumerating the predecessors of a row?
I've been prototypingSmartSheets for managing a pretty sizeable research project (multiple FTEs over several years), potentially replacing Asana for group project management. The reporting is nice, as is the combination of spreadsheet, gantt, card, and resourceviews. The main thing I'm missing is the ability to show, particularly in the card view, all of tasks whose predecessors have been completed and are available for work. It's something I and my staff does on a regular basis in Asana, and for thelarge planned-out research projects my Center runs, it'sbasically essential for how we work and I cannot find a way to do it easily in SmartSheets.
If there was a function for enumerating predecessors, I could simply COUNTIF the number of non-Completed predecessors, and make a row available for work once the predecessors are all Completed. Then I could set up a filter in the Card View to show cards assigned to me that are available for work. This seems like pretty essential functionality to make predecessors useful, but I cannot find a way to do it. Is this possible or planned in the near future?
Tags:
- Education
- Formulas
- Government
- Project Management
- Card View
0 · Share on FacebookShare on Twitter
Mike Wilday ✭✭✭✭✭✭
10/17/18
Options
Predecessors in Smartsheet are more focused around date rather than completion, although what you are asking about makes a lot of sense and would be useful to know.
Without giving it a ton of thought, you could create an IF statement that checks through all your predecessors and ensures they are complete. Or if the rows are dependant on the one above it, and everything is sequential, then you could do a simple formula to indicate if the item before it is completed.
I do this for our course development process. The formula checks a couple rows in the process and reports on whether specific predecessors are complete or not... See the screenshot for an example.
Let me know if you want more specific on how this was done.
0 · Share on FacebookShare on Twitter
Mike Wilday ✭✭✭✭✭✭
10/17/18
Options
On a side note, we add the column with the status to our reports so each user can clearly see when their tasks are ready to be worked on.
0 · Share on FacebookShare on Twitter
Patrick Bridges ✭
10/17/18 edited 10/17/18
Options
That makes sense, yes, and I've also found how to do it with a single predecessor, but not if you have lags or multiple predecessors. If all of our dependencies were linear chains, this would be pretty straightforward, but while most are, the project is complex enough thatthey're not all this way.
A predecessor analogueof CHILDREN() is basically what I'm looking for, and it would make it easy to do what I want. With that, for example, I could do something like IF(COUNTIF(Predecessors()[Status], "Completed") = COUNT(Predecessors), "True", "False") for acheckbox on if the task was ready. Alternatively, I could generate a derived status column that automatically placed tasks with unmet dependencies on hold, and used that to classify cards in the card view.
Ifthat's not available, how hard would it be to construct? I'd have to text process the predecessors field, right? That sounds like a mess...
0 · Share on FacebookShare on Twitter
Mike Wilday ✭✭✭✭✭✭
10/17/18 edited 10/17/18
Options
Correct, that is not already available. But I could see how that would be beneficial to many power users. I recommend submitting a Product Enhancement Request and be sure to outline the use case thoroughly. Sorry I couldn't be of more help.
0 · Share on FacebookShare on Twitter
Paul Newcome ✭✭✭✭✭✭
10/18/18
Options
I too have put in an enhancement request for this. For smaller projects its not too bad to manually enter IF(AND statements and reference the rows of each predecessor, but larger projects as well as lag/lead time really make it a royal pain.
0 · Share on FacebookShare on Twitter
Help Article Resources
'); $(this).css('min-height', '20px'); const searchBoxRoot = document.getElementById("searchbox"+index); Coveo.initSearchbox( searchBoxRoot, "https://search.smartsheet.com/community/" ); }); $('#titleBar .CoveoSearchbox').hide(); $('.coveoSearchButton').on("click",function(){ $('#titleBar .CoveoSearchbox').toggle(); }); // ====== Front Page Search Box ====== $('#Form_search').remove(); var boxes = ["#search-0", "#search-1", "#search-2", "#search-3", "#search-4", "#search-5"]; console.log("PT: Before search box replacement"); $(boxes).each(function(i, val) { // ====== Front Page Search Box ====== $(val).each(function( index ) { console.log(this); $('#searchbox' + i).remove(); $(this).find('form').remove(); $(this).addClass('fpsearchbox'); $(this).attr('id', 'fpsearchbox' + index); $(this).append('
'); $(this).css('min-height', '20px'); const searchBoxRoot = document.getElementById("fpsearchbox"+index); var action = "https://search.smartsheet.com/community/"; if ( $('body').hasClass('Categories')) { var category=$('h1.heading-1').text(); if (category === "Smartsheet Product Feedback & Ideas") { category = encodeURIComponent(category); Coveo.$(searchBoxRoot).on('buildingQuery', function(e, args) { args.queryBuilder.advancedExpression.addFieldExpression('@communitycategory', '==', [category]); }); action = action + '#&f:@communitycategory=['+category+']'; } } Coveo.initSearchbox( searchBoxRoot, action ); }); }); });
Categories
- All Categories
- 14 Welcome to the Community
- 59.8K Get Help
- 96 Global Discussions
- 98 Industry Talk
- 403 Announcements
- 12 Community Corner Newsletter
- 73 Brandfolder
- 125 Just for fun
- 48 Community Job Board
- 23 Member Spotlight
- 1 SmartStories
- 258 Events
- 18 Webinars
- 7.3K Forum Archives
Want to practice working with formulas directly in Smartsheet?
Check out the Formula Handbook template!