Create an array of your strings:
string[] data = new string[] { "B1", "C2", "D1", "GH1", "Ik1", "BT4", "NK" };
Now, you can access them in a loop via a numeric index instead of trying to work with named variables all the time. This will dramatically reduce your code!
And almost certainly, you can use the standard .NET framework methods to make it trivial to get the greatest - it's the last one in a sorted collection:
string[] data = new string[] { "B1", "C2", "D1", "GH1", "Ik1", "BT4", "NK" };
Array.Sort(data);
Console.WriteLine(data[data.Length - 1]);
"If I understood correctly OP, it is about numbers of base 26...not only simple sort..."
Ah.
Still pretty simple!
string[] data = new string[] { "B1", "C2", "D1", "GH1", "Ik1", "BT4", "NK" };
data = data.OrderBy(s => s.ToUpper().Max()).ToArray();
Console.WriteLine(data[data.Length - 1]);