You can use JavaScript on Google Spreadsheet to transform the data before exporting to other applications. Here is a quick-and-dirty script I just wrote for your sample data:
function transformRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet("Result");
var header = values[0].slice(0, values[0].length - 1);
header.push("Question");
header.push("Answer");
newSheet.appendRow(header);
var question = values[0][values[0].length - 1];
// Note: Code below is inefficient and may exceed 6-minute timeout for sheets with
// more than 1k rows. Change it to batch updating to speed up.
// Ref: https://developers.google.com/apps-script/reference/spreadsheet/range#setValues%28Object%29
for (var i = 1; i <= numRows - 1; i++) {
var row = values[i];
var answers = row[row.length - 1].split(";");
for (var ansi = 0; ansi < answers.length; ansi++) {
var newRow = row.slice(0, row.length - 1);
newRow.push(question);
newRow.push(answers[ansi]);
newSheet.appendRow(newRow);
}
}
};
To use it:
- Open script editor in your opened sheet (Tools -> Script editor...)
- Create a empty project for spreadsheet
- Paste the code into the editor
- Save, and run it (Run -> transformRows)
- Return to the spreadsheet, a new sheet will be created and filled with transformed data.