Delete numbers below the diagonal in a table?

Hello,
I have a big table from which I need to delete numbers below the diagonal of the table:

a=TableForm@{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 
   16}}
b = TableForm@{{1, 2, 3, 4}, {, 6, 7, 8}, {, , 11, 12}, {, , , 16}}

Such as a to b above. The table is big, so this is just a case. How to do it smartly?
It is better to replace Null with empty.

Perhaps have a look at the function UpperTriangularize.

Hello,
How do you know so many functions? And how to replace 0 with empty after using UpperTriangularize?

You would need to do some tricks and make your own function:

ClearAll[UpperTriangularizeNull]
UpperTriangularizeNull[m_?MatrixQ] := Module[{mask},
  mask = ConstantArray[Null, Dimensions[m]];
  mask = LowerTriangularize[mask, -1];
  mask + UpperTriangularize[m]
  ]
a = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
UpperTriangularizeNull[a]

Thanks a lot. You know so much!

Another way is to use ReplacePart :

a = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
ReplacePart[a, {i_, j_} /; i > j -> Null]

Thanks! It is a simplest and best way to do so!