Assumption: The rows in your dataset have no inter-dependency.
Make sure your dataset is defined in the first step of your test case.
Ensure that the dataset is set to Global (not local). Decide what to do At End of data.
You should not need to loop the test case back to the dataset to process the next row. Let the TC end as if the test case only processes the first row and stops.
NOTE: In the above example, it was OK for the dataset to start over because there was no data dependencies. We also had several hundred thousand rows of data in the spreadsheet.
When using the test in a staging document, the Coordinator will handle reading the rows and passing them to the virtual users which are running as Simulator instances.
You can use the Staging Doc to set up a performance profile with the number of virtual instances, ramp up, etc. The below provides a simple example of continuously running the above test case with 200 virtual users for 5 minutes. The Coordinator stops giving rows of data to the virtual users so that each instance of a test shuts down gracefully after 5 minutes. You will see a slight ramp up and ramp down since instances of the test case can theoretically end at different times depending on the search time incurred by the System Under Test.
Since you are running only 15 users, it is unlikely that you will need to set up the reporting for a load test, but those settings are configured in the Reports tab of the Staging Doc.