cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
JohnP Kudo Kingpin
Kudo Kingpin

Split - Accessing specific row (by index)

I have a comma separated list which I split into a table with the Split() function. But I'm not certain how I can access a row directly by index? Something like this would be logical (where CurrentIndex is a variable somewhere else in the screen):

 

Split(AxisXLabels; ",")[CurrentIndex]

 

Any advice?

1 ACCEPTED SOLUTION

Accepted Solutions
Power Apps
Power Apps

Re: Split - Accessing specific row (by index)

Currently there is no function to access directly an item by a specific index - you can consider creating a new feature request in the PowerApps Ideas board for this.

 

Notice that you already can do that, using a pair of FirstN and Last functions: to access the N-th item in a table, you can use the following expression:

Last(FirstN(table, N))

In your case, you can get the value as

Last(FirstN(Split(AxisXLabels; ","); CurrentIndex))

View solution in original post

8 REPLIES 8
Power Apps
Power Apps

Re: Split - Accessing specific row (by index)

Currently there is no function to access directly an item by a specific index - you can consider creating a new feature request in the PowerApps Ideas board for this.

 

Notice that you already can do that, using a pair of FirstN and Last functions: to access the N-th item in a table, you can use the following expression:

Last(FirstN(table, N))

In your case, you can get the value as

Last(FirstN(Split(AxisXLabels; ","); CurrentIndex))

View solution in original post

JohnP Kudo Kingpin
Kudo Kingpin

Re: Split - Accessing specific row (by index)

Thanks for the workaround 🙂 I did a LookUp to work around this, but your idea is better/shorter for my use.

 

Actually someone already proposed an index based approach to collection/tables and it was declined:

 

https://powerusers.microsoft.com/t5/PowerApps-Ideas/Collection-indexer-Collection-index/idi-p/2591

NoumanQ Advocate II
Advocate II

Re: Split - Accessing specific row (by index)

Thanks for the solution. Seeminly complex problem with a simple solution. Thanks 

kbirstein1 Advocate III
Advocate III

Re: Split - Accessing specific row (by index)

I don't understand this, can someone give a complete example? I have a collection that has one column and four rows. The column is called "ID", so it looks like this:

ID
2
8

10

15

 

I would like to access the value in the third row, 10. However, this syntax:

Last(FirstN(colLabelChangeIDs,2))

does not work. The error says: 
"The property expects text values. But this rule produces incompatible record values".

 

I have seen this error a lot and understand that it has to do with records vs. single values. 

 

However, the description of "FirstN" is so laughably inadequate in the Microsoft "documentation" it's impossible to understand how it works.

 

 

Power Apps
Power Apps

Re: Split - Accessing specific row (by index)

If you have that expression in a Label, then you need to access the ID property of your collection:

Last(FirstN(colLabelChangeIDs,2)).ID

Notice that this will show you the value in the second row, not the third one (as the first element has index 1). To show the third ID from your collection (i.e., the number 10), you'd use this expression:

Last(FirstN(colLabelChangeIDs, 3)).ID

Hope this helps.

MichelH Advocate IV
Advocate IV

Re: Split - Accessing specific row (by index)

I notice this doesn't work for me.

I tried to pull appart a string   "69, 85, 101, 0.8"  to feed the parts into the RGBA funtion to color a label alike.

 

To get something usable, I had to add the .Result and use the Value function, even though the strings comming out of the Split seemed appropriate input. 

 

RGBA(
Value( First( Split( FocusBorder.Text,",") ).Result ),
Value( Last( FirstN( Split( FocusBorder.Text,","), 2) ).Result ),
Value( Last( FirstN( Split( FocusBorder.Text,","), 3) ).Result ),
Value( Last( Split( FocusBorder.Text,",") ).Result )
)

 

Thanks for the  Last( FirstN( array , N) )   trick!!

CalfordMath Advocate III
Advocate III

Re: Split - Accessing specific row (by index)

Brilliant workaround! @CarlosFigueira  Thanks.  Works for my needs.


Last(FirstN(table, N))

 

Highlighted
jayprakash
Frequent Visitor

Re: Split - Accessing specific row (by index)

I have done By this Logic

Select(Parent);RemoveIf(ProductList, Index = Gallery2.Selected.Index);

 

Clear(collection2);

ForAll(ProductList,
Collect(collection2,
{
Index: CountRows(collection2)+1,
Comments: Comments,
SalesPrice: SalesPrice,
Discount: Discount,
Quantity: Quantity,
Height: Height,
Width: Width,
Color: Color,
ProfileSet: ProfileSet,
Product: Product,
Group: Group
}
)
);
Clear(ProductList);
ForAll(collection2,
Collect(ProductList,
{
Index: Index,
Comments: Comments,
SalesPrice: SalesPrice,
Discount: Discount,
Quantity: Quantity,
Height: Height,
Width: Width,
Color: Color,
ProfileSet: ProfileSet,
Product: Product,
Group: Group
}
)
);
Set(ValueToIncrement, CountRows(ProductList));

wrote: -Jayprakash Birla

Helpful resources

Announcements
MBAS Gallery 2020

MBAS Gallery 2020

Watch Microsoft Business Applications Summit sessions on-demand.

‘Better Together’ T-Shirt Contest – Winner Announced!

‘Better Together’ T-Shirt Contest – Winner Announced!

And the winner is...

firstImage

New Ranks and Rank Icons released on April 21!

The time has come: We are finally able to share more details on the brand-new ranks coming to the Power Apps Community!

Power Platform 2020 release wave 1 plan

Power Platform 2020 release wave 1 plan

Features releasing from April 2020 through September 2020

Top Solution Authors
Top Kudoed Authors
Users online (6,050)