This looks more like it:
// check if the repeater field has rows of data.
if ( have_rows( 'referral_code', 'option' ) ) {
// loop through the rows of data.
while ( have_rows( 'referral_code', 'option' ) ) : the_row();
if ( 'acX54s' === get_sub_field( 'referral_value' ) ) {
delete_sub_row( 'referral_value', get_row_index() );
}
endwhile;
} else {
// no rows found.
}