Like I explained - you get rid of the For:
int i = 16;
void loop(){
currentMillis = millis();
elapsedMillis1 = currentMillis - previousMillis1;
if (elapsedMillis1 >=holdTime1){ // holdTime1 = 5000UL for 1/2 second updates for example
previousMillis1 = previousMillis1 + holdTime1; // all time elements are unsigned long
// now the broken up 'for' loop
lcd.setCursor(0,0);
lcd.print("Do This");
lcd.setCursor(i, 1);
//and 'manually' keeping track of where in the 'for' loop
i=i-1;
if (i > -16){i = 16;} // reset after the end
// make text scroll
} // end time check
// do other stuff, like update the array that holds the text to be displayed
elapsedMillis2 = currentMillis - previousMillis2;
if (elapsedMillis2 >= duration2){ // duration2 is some other timed event
previousMillis2 = previousMillis2 + duration2;
// do other timed, cyclic event
}
// do other stuff when not doing the timed, cyclic stuff
} // end loop