First Part
You can definitely use Excel to edit your questions and save them. But when you save it, pay attention to the file format.
You want to save your Excel file as a .csv file instead of .xls or .xlsx file. Just go to File -> Save File As -> and change type to .csv.
This is because, reading .csv files is a lot easier. .csv files have each cell in row separated by a comma (,) and each row by a newline ('\n') character.
So, here is a sample Excel file:

After I save it as a .csv file and open it using a text editor (Atom, here), it looks like this:

After, that you only need to write some code to read the file.
This is the code I used (I've added excessive comments to make the code more explicit for beginners):
#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
using namespace std;
const int MAX_QUESTIONS = 3;
const int COLUMNS = 6; //Question, Options A, B, C, D, Correct Answer
int main() {
    ifstream fp;
    fp.open("test.csv");
    //If file could not be opened
    if (fp.fail()) {
        std::cout << "failed to open file" << std::endl;
        return 1;
    }
    //Create a 2D vector of strings to store the values in the file
    vector< vector<string> > table;
    string line;
    //Loop through the entire file (fp)
    //Store all values found until I hit a newline character ('\n') in the string line
    //This loop automatically exits when the end-of-file is encountered
    while (getline(fp, line, '\n')) {
        //Create an temporary vector of strings to simulate a row in the excel file
        vector<string> row;
        //Now I am passing in this string into a string stream to further parse it
        stringstream ss;
        ss << line;
        string part;
        //Similar to the outer loop, I am storing each value until I hit a comma into the string part
        while (getline(ss, part, ',')) {
            //Add this to the row
            row.push_back(part);
        }
        //Add this row to the table
        table.push_back(row);
    }
    //Print out the entire table to make sure your values are right
    for (int i = 0; i <= MAX_QUESTIONS; ++i) {
        for (int j = 0; j < COLUMNS; ++j) {
            cout << table[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
Second Part
To choose a random number, you can use this code (I borrowed it from another answer)
#include <random>
std::random_device rd;     // only used once to initialise (seed) engine
std::mt19937 rng(rd());    // random-number engine used (Mersenne-Twister in this case)
std::uniform_int_distribution<int> uni(min,max); // guaranteed unbiased
auto random_integer = uni(rng);
Unlike the old method, this doesn't create bias towards the lower end. However, the new engine is available only in C++11 compilers. So keep that in mind. If you need to use the old method, you can correct the bias by following this answer.
To choose 5 different numbers, each time you generate a random number store it in an array and check whether this number has already been used. This can prevent repetition of questions.