Нужно применять стиль не ко всему столбцу, а к каждой ячейке по отдельности.
Просто замените
dataGridView1.Columns[j].DefaultCellStyle.BackColor = Color.Chartreuse;
на
dataGridView1[j, i].Style.BackColor = Color.Chartreuse;
для ветки else - аналогично.
По остальному:
* Посмотрите границы циклов, оба раза используете количество столбцов - границы для второго должны определятся количеством строк
Обновлено (исправлена опечатка)
Должно получится примерно так
private void task1_Click(object sender, EventArgs e)
{
int n1, n2;
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (int.TryParse(dataGridView1[j, i].Value.ToString(), out n1)
&& int.TryParse(dataGridView2[j, i].Value.ToString(), out n2))
{
if (n1 > n2)
{
dataGridView1[j, i].Style.BackColor = Color.Chartreuse;
}
else
{
dataGridView1[j, i].Style.BackColor = Color.White;
}
}
}
}
task2.Enabled = true;
}