Google 스프레드 시트에서 텍스트를 열로 변환하는 방법은 무엇입니까?
예를 들어 하나의 셀에 다음 데이터 문자열이 있습니다.
5,233,6,2,6,7,2,2,6,6
쉼표 구분 기호로 열로 나누고 싶습니다.
편집 : Google은 능숙하게 생각하기 때문에 Google Apps 스크립팅을 사용하지 않는 답변으로 수락 된 답변을 변경했습니다.
SPLIT
. 값이 설정 되었습니까? 알고있는 값을 붙여 넣을 수 있습니다.
Google 스프레드 시트에서 텍스트를 열로 변환하는 방법은 무엇입니까?
예를 들어 하나의 셀에 다음 데이터 문자열이 있습니다.
5,233,6,2,6,7,2,2,6,6
쉼표 구분 기호로 열로 나누고 싶습니다.
편집 : Google은 능숙하게 생각하기 때문에 Google Apps 스크립팅을 사용하지 않는 답변으로 수락 된 답변을 변경했습니다.
SPLIT
. 값이 설정 되었습니까? 알고있는 값을 붙여 넣을 수 있습니다.
답변:
다음 공식은 그렇게 할 것입니다. 텍스트에서 열로 :
A1=5,233,6,2,6,7,2,2,6,6
A2=SPLIT(A1;",")
그리고 다음; 텍스트-행 :
A1=5,233,6,2,6,7,2,2,6,6
A2=TRANSPOSE(SPLIT(A1;","))
업데이트 03-02-2013
결과를 분할하여 A1
값을 붙여 넣으면 OP의 답변에 사용 된 모든 코드 줄과 동일한 결과가 나타납니다. Google Apps Script를 사용하여 사진을 제공했으며 이것이 내가 만든 것입니다. 텍스트에서 열로
function mySplit() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var cell = sh.getActiveCell().getValues()[0];
var sCell = cell[0].split(",");
var row = sh.getActiveCell().getRowIndex();
var col = sh.getActiveCell().getColumnIndex();
sh.getRange(row,col+1,1,sCell.length).setValues([sCell]);
}
내장 분할 함수를 사용하여 결과를 분할하여 시트에 추가하면됩니다.
Text to Columns는 매우 편리한 기능이며 많은 Google 스프레드 시트 사용자가 Excel을 다시 사용하는 이유 중 하나입니다. Google이 공식적으로 기능을 지원하기로 결정할 때까지이 솔루션은 기능을 추가하기위한 폴리 필로 사용될 수 있습니다.
코드는 다음과 같습니다.
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [];
menuEntries.push({ name:"Text to columns", functionName:"textToColumns" });
menuEntries.push({ name:"Text to columns (custom separator)", functionName:"textToColumnsCustom" });
menuEntries.push(null);
menuEntries.push({ name:"Columns to Text", functionName:"columnsToText" });
menuEntries.push({ name:"Columns to Text (custom separator)", functionName:"columnsToTextCustom" });
ss.addMenu("Advanced", menuEntries);
}
function textToColumnsCustom() {
var separator = Browser.inputBox("Text to column","Enter the the separator",Browser.Buttons.OK);
textToColumns(separator);
}
function columnsToTextCustom() {
var separator = Browser.inputBox("Column to text","Enter the the separator",Browser.Buttons.OK);
columnsToText(separator);
}
// Expands a single cell of CSV formatted text to multiple columns
function textToColumns(separator) {
var sep = typeof(separator) !== 'undefined' ? separator : ',';
var ss = SpreadsheetApp.getActiveSheet();
var r = ss.getActiveRange();
// check that only one column was selected
var col = r.getColumn();
if(col !== r.getLastColumn()) {
Browser.msgBox("Error", "Invalid selection, too many columns.", Browser.Buttons.OK);
return;
}
var firstRow = r.getRow();
// short cut the one row selection
if(firstRow === r.getLastRow()) {
var values = r.getValues().toString().split(sep);
ss.getRange(firstRow,col+1,1,values.length).setValues(new Array(values));
return;
} else {
var rows = r.getValues();
var values = [];
var cols = 0;
for(var i = 0, len = rows.length; i < len; i++) {
var rowValues = rows[i].toString().split(sep);
var rowValuesLen = rowValues.length;
if(cols < rowValuesLen) { cols = rowValuesLen; }
values.push(rowValues);
}
// set all values at once (padding required because setValues doesn't accept jagged 2d arrays)
padRow(values, cols);
ss.getRange(firstRow,col+1,values.length,cols).setValues(values);
}
}
// Pads a row with empty values to the specified length
function padRow(array, length) {
for(var i = 0; i < array.length; i++) {
var arrLen = array[i].length;
if(arrLen < length) {
var padLen = length - arrLen;
var padding = new Array(padLen);
array[i].push.apply(array[i], padding);
for(var j = 0, len = array[i].length; j < len; j++) {
if(typeof(array[i][j]) === 'undefined') {
array[i][j] = "";
}
}
}
}
return array;
}
function columnsToText(separator) {
var sep = typeof(separator) !== 'undefined' ? separator : ',';
var ss = SpreadsheetApp.getActiveSheet();
var r = ss.getActiveRange();
var col = r.getColumn();
var firstRow = r.getRow();
var rows = r.getValues();
var values = [];
for(var i = 0, len = rows.length; i < len; i++) {
var value = rows[i].join(sep);
values[i] = [value];
}
col -= 1;
ss.getRange(firstRow,col,values.length,1).setValues(values);
}
스크립트 편집기를 저장하고 닫으십시오. 그런 다음 스프레드 시트를 새로 고치십시오. 로드하는 데 1 초가 걸리지 만 툴바에서 '도움말'다음에 '고급'팝업 메뉴가 나타납니다.
용법:
그게 다야. 사용자 정의 구분 기호 ( '텍스트에서 열 (사용자 정의)'로)를 사용하여 분할을 수행하고 프로세스를 '열에서 텍스트로'역으로 바꿀 수도 있습니다.
1,421,873,190,017,370,000,000,000 1.42E+24
즉, CSV 라인은 9 열로 분할 했어야하지만, 그것은 단지 1로 분할되었다
split 함수를 사용했는데 continue 수식도 사용하기 때문에 완벽하게 작동했으며 A 열의 텍스트에서 적절한 간격으로 BCDE 열로 정확하게 변환합니다.
내 예 :
Cell A1= text1, text2, date1, number1
Cell B1= split(A1,",")
B1의 결과는 text1입니다. C1의 결과는 text2입니다. D1의 결과는 date1입니다. E1의 결과는 number1입니다.
날짜가 1-jun으로 표기되고 01/06으로 번역되었으므로 형식을 처리합니다.
전지에 사용 나누 수식 어디 BCDE CONTINUE(B1; 1; 2)
, CONTINUE(B1; 1; 3)
, CONTINUE(B1; 1; 4)
. 이 부분은 모두 자동으로 작성되었습니다.
Apps Script를 사용한 Evan의 답변이 정말 마음에 들었고 정규 표현식 구분 기호 일치에 대한 지원을 추가하여 약간 개선되었습니다. onOpen의 메뉴에 다음을 추가했습니다.
menuEntries.push({
name: "Text to columns (regular expression separator)",
functionName:"textToColumnsRegExp"
});
그리고 참조 된 기능을 추가했습니다 :
function textToColumnsRegExp() {
var separator = Browser.inputBox(
"Text to column",
"Enter the regular expression for the separator ",
Browser.Buttons.OK);
if (separator) {
textToColumns(new RegExp(separator));
}
}
Evan이 Javascript의 String.prototype.split을 사용하므로 문자열이나 RegExp 객체를 구분 기호로 사용하므로 다른 변경은 필요하지 않습니다. 에반도 그렇게!
데이터 → 텍스트를 열로 나누기 ...에 도움이되는 메뉴 항목이 있습니다 .
셀을 한 번 클릭하고 데이터를 붙여 넣습니다.
여러 행에 걸쳐 하나의 열에 만 나타납니다.
새로 채워진 셀을 강조 표시된 상태에서 데이터 → 텍스트를 열로 분할 메뉴로 이동하십시오 .
앱에서 구분 기호를 자동 감지하면 축하합니다. 완료되었습니다.
그렇지 않으면 분할하려는 구분 기호를 묻는 작은 위젯이 나타납니다.
참고 :이 위젯은 창 하단 근처에 표시 되어 찾기가 조금 어려울 수 있습니다!
위젯을 사용하여 데이터를 구분할 구분 기호 (쉼표, 세미콜론, 마침표, 공백 또는 사용자 정의)를 선택하십시오.
탭으로 분할하려면 다음을 수행하십시오.
columnToText와 동등한 것은 =JOIN(delim, array)
공식 을 사용하는 것 입니다. 예를 들어 =JOIN(",", A1:A10)
셀 A1에서 A10까지의 값 문자열을 연결합니다.
Google 스프레드 시트의 새 버전에서는 이제 Google App Script가 더 이상 사용되지 않습니다. .
Google 애드온 갤러리 의 전원 도구 를 사용하고 분할 기능을 사용할 수 있습니다. 잘 작동한다.