When you ask to format arrays, MATLAB proceeds along the columns, using all of the first input before moving on to the second input.
If your entries were purely numeric, then the pattern to use would be to change
sprintf(format, var1(:), var2(:), var3(:))
into
sprintf(format, [var1(:), var2(:), var3(:)].' ) %transpose is important
However you have a mix of numeric and character, so you cannot do simply that, because the character entries cannot be included in the same single array as the numeric entries/
So what you need to do instead is create a cell array with one entry for each value being output, along the lines of
%assuming mat is a cell array of character vectors and the other two are numeric datacell = [mat(:), num2cell([Tss(:,[1 end]), deltaTss(:)])] .'; Transpose is important
then
sprintf(format, datacell{:})