Survey123 - Repeat Calculation Sum Based on input

308
10
Jump to solution
09-20-2019 12:45 PM
Highlighted
MVP Regular Contributor

I am trying to get a summary of inputs based on 3 different questions. Using Repeat. 

My questions are:

Area in sqft, Distress Type, Rating 

Possible Distress types

Alligator Cracking, Bleeding, and Clock Cracking

Possible Ratings

Low, Med, High

Area is inputted 

I hope to have an output of something like this: 

Rating

Area of Alligator Cracking

Low

20

Med

100

High

60

Total

180

Rating

Area of Bleeding

Low

5

Med

6

High

7

Total

18

I am looking for a way to have the area increase after each repeat.

Thanks

Reply
0 Kudos
1 Solution

Accepted Solutions
Highlighted
Esri Esteemed Contributor

Hi Rickey,

One way to this is, in the repeat, have a set of calculate questions for each of the category/value combinations you wish to create a sum for.  Each of these would have a formula using an if() function to check if the correct category was selected, and then put the value in if true and 0 if false.  For example, the 'Low, Alligator' category (lets call this low_allig) would look something 

if(selected(${Severity}, 'low') and selected(${distress_type}, 'alligator'), ${sq_ft}, 0)

You then would have a question that uses the sum() function to add the values in the parent part of the form:

sum(${low_allig})

View solution in original post

10 Replies
Highlighted
Esri Esteemed Contributor

Hi Rickey,

One way to this is, in the repeat, have a set of calculate questions for each of the category/value combinations you wish to create a sum for.  Each of these would have a formula using an if() function to check if the correct category was selected, and then put the value in if true and 0 if false.  For example, the 'Low, Alligator' category (lets call this low_allig) would look something 

if(selected(${Severity}, 'low') and selected(${distress_type}, 'alligator'), ${sq_ft}, 0)

You then would have a question that uses the sum() function to add the values in the parent part of the form:

sum(${low_allig})

View solution in original post

Highlighted
MVP Regular Contributor

James Tedrick

The code works to sum up the current repeat but resets after each input. Is there a way to keep the total until the survey has been submitted? 

Reply
0 Kudos
Highlighted
Frequent Contributor II

Try the function once()

Highlighted
MVP Regular Contributor

I can get the results to add but I want the numbers to always be displayed. 

Right now when I use if(selected(${Severity}, 'low') and selected(${distress_type}, 'alligator'), ${sq_ft}, 0)

when severity low is not selected the total sq blanks out. I want the total displayed no matter the selected. 

I have a formula for each severity

if(selected(${Severity}, 'low') and selected(${distress_type}, 'alligator'), ${sq_ft}, 0)

if(selected(${Severity}, 'med') and selected(${distress_type}, 'alligator'), ${sq_ft}, 0)

if(selected(${Severity}, 'high') and selected(${distress_type}, 'alligator'), ${sq_ft}, 0)

The output shows the total of distress type alligator no matter what the severity is. I want it to keep a tally of rating that shows at all times not just when the right rating is selected. 

Each total should be 9 not 34

  

Reply
0 Kudos
Highlighted
Frequent Contributor II

Post your formula for sq_ft also.

Reply
0 Kudos
Highlighted
MVP Regular Contributor

My formula for sq_ft is 

(${width}*${length})

Reply
0 Kudos
Highlighted
Frequent Contributor II

Is the Summary section outside the repeat?  Seems like it.  If so then how would it know which width and length to use?

Are you maybe using sum or something?   I think you need to move the calcs into the repeat.  Then you can sum them in another field outside the repeat if you need to.

Highlighted
MVP Regular Contributor

Doug Browning

Yes I did have the summary outside the repeat.  I will try moving them in and see what happens.

Thanks! 

Reply
0 Kudos
Highlighted
Frequent Contributor II

Ok that makes sense then.  There is a width and height for each repeat.  Having it outside makes no sense then.

Reply
0 Kudos