If you're filling in the cells of a named range by first filling the top row, left to right, before moving on to the 2nd row etc. then instead of using .Cells(row,column) you can use .Cells(index) and just keep incrementing that index by 1 each time.
But you're still going to have problems because you're not resetting r and c to 1 when a different named range or different sheet is encountered.
Again, if you set up a workbook with named ranges etc. in and attach it here along with a text file, I'll give it a go. Of course if you can't be bothered, then neither can I.