It seems to me that this is wrong...
lastrow1 = sh1.Range("K" & sh1.Rows.count).End(xlUp).Row
Which refers to the duration of emergency column and therefore your loop count is wrong. Also, this seems wrong...
If Not (IsNull(rng) Or IsEmpty(rng)) Then
It should be...
If Not rng Is Nothing Then
HTH. Dave
ps. This page seems buggy???