예스스팟에서 Excel에 저장한 값을 읽어와서 배열에 저장하는 로직을 부탁드리고자 합니다.
Excel에는 하나의 시트에 두 컬럼에 데이터를 넣을텐데, 첫번째 칼럼은 숫자이고 두번째 칼럼은 문자열입니다. 열의 개수는 유동적이며 스팟에서 Excel 데이터를 불러올 때 현재 열 개수를 확인해야 합니다.
답변 1
예스스탁
예스스탁 답변
2013-08-21 19:44:46
안녕하세요
예스스탁입니다.
엑셀자체에서 행의 값은 숫자로 리턴이 되는데 열의 값이 알파벳으로만 리턴이 되어
특정행의 값을 우측으로 이동하며 적혀진 값을 배열변수에 저장하려면
열을 지정할 수 있는 내용을 만들어 사용해야 합니다.
아래식은 알파벳조합을 인식하는 배열변수를 만들고
해당 배열변수 이용해 특정행에서 우측으로 가며 값을 배열변수에 저장하게 작성했습니다.
참고하시기 바랍니다.
var ABC = [];
var C3 = [];
var C4 = [];
function Main_OnStart()
{
Main.MessageList("행기준 사용된 셀갯수 :",Excel1.GetColCount(1)," 열기준 사용된 셀갯수:",Excel1.GetRowCount(1))
//A~CZ까지 ABC 벼열변수에 저장 [1]부터 저장
ABC[1] = "A"; ABC[2] = "B"; ABC[3] = "C"; ABC[4] = "D"; ABC[5] = "E";
ABC[6] = "F"; ABC[7] = "G"; ABC[8] = "H"; ABC[9] = "I"; ABC[10] = "J";
ABC[11] = "K"; ABC[12] = "L"; ABC[13] = "M"; ABC[14] = "N"; ABC[15] = "O";
ABC[16] = "P"; ABC[17] = "Q"; ABC[18] = "R"; ABC[19] = "S"; ABC[20] = "T";
ABC[21] = "U"; ABC[22] = "V"; ABC[23] = "W"; ABC[24] = "X"; ABC[25] = "Y";
ABC[26] = "Z";
iii = 0;
for (var i = 1; i <= 3; i++)
{
for (var j = 1; j <= 26; j++)
{
iii = iii +1;
ABC[26+iii] = ABC[i]+ABC[j];
}
}
//첨부된 그림과 같은 값을 배열변수에 저장
//C3행의 값을 우측으로 진행하며 배열변수에 저장
//C4행의 값을 우측으로 진행하며 배열변수에 저장
for (var ii = 3; ii < 3+Excel1.GetColCount(1); ii++)
{
C3[ii-3] = Excel1.GetData(1, ABC[ii]+3)
C4[ii-3] = Excel1.GetData(1, ABC[ii]+4)
}
Main.MessageList("알파벳조합:",ABC);
Main.MessageList("3행:",C3);
Main.MessageList("4행:",C4);
}
수식에서 엑셀에서 값을 불러와 저장하실 때
어떤셀에서 데이터가 시작하는지 사용자분이 인지하시고 식에서 이용하셔야 합니다.
엑셀객체의 GetColCount와 GetRowCount는 데이터가 적혀진 영역에서 행과 열의 수를 리턴합니다.
즉 가장 좌측상단의 셀에서 우측하단의 셀까지를 영역으로 하여 행과 열의 수가 반환됩니다.
첨부된 그림과 같이 데이터가 적혀진 경우 GetColCount는 10, GetRowCount는 2입니다.
한 행에 10개의 셀이 사용되었고 열에서는 2개씩이라는 의미입니다.
즐거운 하루되세요
> 곰탈 님이 쓴 글입니다.
> 제목 : Excel로부터 데이터 불러와서 배열에 저장
> 예스스팟에서 Excel에 저장한 값을 읽어와서 배열에 저장하는 로직을 부탁드리고자 합니다.
Excel에는 하나의 시트에 두 컬럼에 데이터를 넣을텐데, 첫번째 칼럼은 숫자이고 두번째 칼럼은 문자열입니다. 열의 개수는 유동적이며 스팟에서 Excel 데이터를 불러올 때 현재 열 개수를 확인해야 합니다.