'엑셀'에 해당되는 글 10건

  1. 2009.06.01 엑셀, 큰따옴표 처리 (2)
  2. 2009.04.03 chr(13) 이용해서 엔터 들어간 내용을 엑셀로 저장 (2)
  3. 2009.03.21 트라비안 관리용 엑셀 파일, v0.14 (7)

엑셀, 큰따옴표 처리

|


텍스트로 사용한다면 큰따옴표 걱정을 할 필요가 없습니다만,
큰따옴표가 수식에 들어간다면 조금은 다른 고민을 해야 합니다.
프로그래밍 작업을 하였던 분이라면 \" 처럼 이스케이프 문자로 표현하고 싶어할텐데, 엑셀에서는 씨도 안 먹힙니다.
그렇다고 작은따옴표(') 를 사용하려니 문제가 발생할 것도 같고.. 크윽.
그러면, 맨땅에 헤딩 하는 식으로 한번 해 봅시다. 수식에 큰따옴표를 하나씩 추가해 보는 겁니다.


큰따옴표 하나라면 어떨까요..? 으음, 아래와 같은 오류 메시지가 나옵니다.
아래 메시지에서 "예(Y)" 버튼을 클릭하면 큰따옴표 둘이 들어가네요.
="




큰따옴표 둘이라면 어떨까요..? 으음, 오류는 없고, 그냥 빈 셀이 생성됩니다. 물론 수식은 있고 값은 비었다는 것이지요.
=""


큰따옴표 셋이라면 어떨까요..?
위에 소개한 메시지 창이 뜨고 "예(Y)" 버튼을 클릭하면 큰따옴표 넷이 들어갑니다. 화면에 큰따옴표 하나가 표시됩니다.
="""


큰따옴표 넷이라면 어떨까요..? 으음, 오류는 없고, 수식에는 큰따옴표가 넷이고, 화면에는 큰따옴표가 하나가 들어갑니다.
=""""

이제 감이 잡히셨죠..?
자, XML 에 속성으로 들어가는 값들이 A1:A500 까지 주욱 들어 있다고 가정해 봅시다.
XML 각 줄에는 <tag1 attr1="val1">text1</tag1> 이런 내용이 들어가야 할때, 엑셀로 한번 만들어 봅시다.
B1 셀에 ="<tag1 attr1="""&A1&""">text1</tag1>" 라고 하면 됩니다.
큰따옴표가 세개 들어가죠..? 따옴표가 2개이면 화면에 큰따옴표가 1개 출력 됩니다.
문자로서의 큰따옴표는 큰따옴표 두개를 연이어서 사용한다는 것이지요.
이런 문법은 어디서 많이 봤죠..? PHP 에서 말이지요.

="<tag1 attr1=""에서 첫번째 큰따옴표는 엑셀 수식에서 문자열의 처음을 의미하고,
 마지막 큰따옴표는 문자열의 마지막을 의미합니다.
이어진 &A1 은 앞에서 정의한 문자열에 A1 셀의 값(수식이 아니고 값입니다)을 덧붙인다는 것이지요.
마찬가지로 &""">text1</tag1>" 은, & 다음에 사용된 큰따옴표와 맨마지막 큰따옴표 사이의 문자열을 덧붙인다는 것이지요.

Trackback 0 And Comment 2
  1. Favicon of https://rabbitchris.tistory.com BlogIcon 래빗 크리스 2009.11.27 10:26 신고 address edit & del reply

    JXL 을 이용한 Java 로 엑셀 들여다 보기.
    http://blog.daum.net/question0921/351

  2. Favicon of https://rabbitchris.tistory.com BlogIcon 래빗 크리스 2009.12.06 23:05 신고 address edit & del reply

    어차피 2번 반복하면 큰따옴표가 나오는데, 큰따옴표 하나는 문자열의 시작과 끝을 나타내니까..
    결론은, 큰따옴표 하나를 표현하기 위해서는 문자열의 처음과 끝을 표시하고 큰따옴표 2개를 입력한다는 것.

chr(13) 이용해서 엔터 들어간 내용을 엑셀로 저장

|

chr(13) 과 chr(10) 에 대해서 왈가왈부 말이 많네요.
다들 옳은 이야기를 하는데 이걸 어디에 써 먹어야 하는지는 별로 없는 것같네요.

여기에서는, 엑셀에서 사용하는 방법을 간략하게 설명합니다.
만약 tableA 에 columnB 가 있는데, columnB 에 엔터 문자가 들어가 있는 것을 엑셀에 담을때 유용합니다.
select columnB from tableA 라고 하면 엑셀에 담길 내용이 주욱 나오죠..?
그런데 여기에 이상한 문자가 찍힐 겁니다.. 음악에서 사용되는 8분 음표인 '♪' 이것이죠.
엑셀에서 이걸 없애려고 해도 쉽지 않지요.

이넘이 나오지 않게 하려면..
select replace(columnB,chr(13),'') from tableA 라고 하면 됩니다.
chr(13) 대신에 chr(10) 을 사용한다면 줄바꿈이 되지 않고 음표가 찍히니까 주의 하세요.

Trackback 0 And Comment 2
  1. Favicon of https://rabbitchris.tistory.com BlogIcon 래빗 크리스 2010.03.26 21:57 신고 address edit & del reply

    완전한 줄바꿈은 사실 chr(13)||chr(10) 의 순서로 붙여야 한다는 사실.

  2. Favicon of https://rabbitchris.tistory.com BlogIcon 래빗 크리스 2010.05.04 10:23 신고 address edit & del reply

    clob 이라면 데이타를 추출할때 문자형으로 변환해야 하지요.
    select replace(to_char(columnB),chr(13),'') from tableA

트라비안 관리용 엑셀 파일, v0.14

|
버전이 0.14 로 바뀌면서 구성이 달라졌습니다. 아래 그림을 이해하시면 0.14 버전의 구성도 이해 하시리라 생각합니다.
그리고, 버전업은 당분간 중지입니다. ㅠㅠ
첨부된 파일을 열어보면 워크시트가 두개인데, 하나는 Status, 하나는 Data1 입니다.
아직은 초보 수준이라 별 내용은 없습니다. 트라비안을 더 경험하면 기능이 늘어나겠죠.. ㅋㅋ
엑셀에 대해서 아시는 분이라면 필요한 부분을 수정하면 됩니다.
다만, 혼자만 쓰시는 것이 아니라 누군가에게 주실 때에는 즉, 유포하실 때에는 주의해 주세요.
본 엑셀 파일의 라이센스는 비상업적 용도로 무료이고, 로직 변경시 마이너 버전을 수정해서 유포 가능합니다.
유포하실 때에는 저에게도 한부 보내 주세요. 이메일 주소는 happy.i.chris@gmail.com 입니다.
엑셀 파일명에는 마이너 버전을 명시해 주시고, 변경하시더라도 매크로는 사용하지 말아 주세요.
매크로가 들어 있다면 감염된 것으로 간주하시기 바랍니다.

아래 그림에서 회색으로 칠해진 부분만 수정하면 됩니다.
1. B3:E3 까지는 현재 보유량을 직접 입력합니다.
2. H9:K9 까지는 시간당 생산량을 직접 입력합니다.
3. A9 은 이번에 작업할 내용입니다.
    유효성검사가 들어가 있기 때문에 A9 셀을 클릭하고 나오는 목록에서 선택하세요.
    가나다 순으로 정렬되어 있습니다. 엑셀에 대해서 아는 분은 무언가 수정을 해도 상관 없습니다.
    Data1 워크시트에 저장된 데이타를 기준으로 필요 제고량인 B9:E9 을 vlookup 함수를 사용해서 자동으로 채워줍니다.
4. B24:B26 까지는 비밀창고의 레벨입니다.
    제 생각에는 비밀창고가 3개 까지는 필요하지 않을까 싶어요.
    더 필요하신 분은 추가하고 관련 로직을 수정하면 되겠죠.
    비밀창고의 레벨은 01~10 까지로 2자리 숫자를 맞춰 주시면 됩니다.
    B24:B26 사이의 값이 바뀌면 F3:F4, F15:F16까지의 숫자가 바뀝니다.
    아, B3:E4, B15:E16 까지는 조건부 서식이 들어 있습니다.
    비밀창고의 2/3 선을 넘으면 해당 범위의 글자가 빨간색으로 바뀝니다.
    튜턴족의 공격시 비밀창고 총량의 1/3 을 가져갈 수 있기 때문에 이렇게 했습니다. ^^>
5. I22 는 현재 업그레이드 되고 있는 작업에 소요되는 시간입니다.
   엑셀 파일에서 다루는 모든 "시간:분" 의 표시는 '시간.분' 으로 포인트(점, '.') 으로 구분했습니다.
   수치계산을 하려고 그랬습니다. 포인트 앞은 시간으로, 뒤는 분으로 계산하는 식이죠.
   로마족은 자원도 두개, 건물도 한개 등을 동시에 업그레이드 할 수 있는데,
   갈리아는 (제가 지금 갈리아를 합니다) 한번에 하나밖에 생산을 못해서,
   진행중인 작업에 필요한 시간과 이번의 작업에 필요한 자원이 모이는 시간의 차이가 어떤지 비교하려고 체크합니다.
6. H4:K4 는 교역을 하는 경우 입력합니다. 필요한 경우만 입력하는 것이죠.
   내가 내다 파는 것이 점토 100 이고 사 와야 하는 것이 철 100 이면,
   I4 에 -100, J4 에 100 (+100 과 동일) 을 입력하는 방식입니다.
   이곳에 값이 입력되면 B4:E4, H5:K5, B16:E16, H16:L16, F25, I25 등에 반영됩니다.
7. A30 에는 목표를 적었습니다. 다음에 뭘 해야 할지 주욱 순서를 정하는 거죠.
    다른 셀에 영향을 주는 것이 아니고 생각을 정리하기 위해 끄적이는 정도입니다.
일단 기본적인 설명을 했습니다. 다음엔 어떻게 사용하는지 설명합니다.




#상황1. 농지들중 하나의 레벨을 3으로 올린다고 할때 자원이 모이는 시간은 언제가 될까요?
           설명이 길어지기 때문에 미리 답을 알려 드리면, I25 에 표시된 3월 22일 0시 31분 입니다.

위의 이미지를 보세요. A9 셀을 클릭해서 '농지03' 을 선택합니다.
이때 필요한 자원이 B9:E9 까지 채워집니다.
더불어 소요 시간이 14분 이라고 나오네요. 이건 조금 그렇죠..? 아직 정리가 안 된 부분도 있군요.
엑셀에서 시간은 포인트(점, '.') 앞이 시간, 뒤가 분이라고 해 놓고 말입니다. ㅠㅠ
현재 보유량이 B3:E3 이기 때문에 현시점을 기준으로 필요한 자원이 H3:K3 에 표시됩니다.
H3:K3, H5:K5 에 입력된 값이 마이너스 이면 숫자가 빨간색으로 표시됩니다.
현재 보유량 B3:E3 와 시간당 생산량 H9:K9 을 고려할 때,
이번 작업을 하기 위해 필요한 시간은 H15:K15 에 표시됩니다.
그림에서 보면, 목재는 1시간 38분, 점토는 3시간 10분, 철은 59분, 작물은 1시간이 소요되네요.
이들중 가장 큰 값이 점토 3시간 10분 이므로, 이번 작업을 위해서는 3시간 10분이 소요되는 것이죠.
따라서 L15 에 표시되는 3시간 10분이 '농지' 들중 하나를 3레벨로 올리기 위해 지금부터 소요되는 시간입니다.
그런데 지금부터 3시간 10분이라고 하면 도대체 몇시 몇분을 얘기하는 것일까요..?
현재 시간이 F23 과 같다고 한다면 I23 인 3월 21일 22시 03분에 농지 하나를 3레벨로 올릴 수 있죠.
F23 에 입력되어 있는 엑셀 함수가 now() 인데, 현상태에서 저장 버튼을 눌러도 변동이 안 되는군요.
어느 셀에서든 F2 를 누르거나 더블 클릭을 해서 수정 모드로 바뀌면 자동 계산이 되어 바뀌기는 하죠.
아무튼, 실수로 now() 가 바뀐다면 I23 에 표시되는 시간이 바뀌겠죠..? 그러면 최종 시간이 변경되죠.
이것을 방지하기 위해서 F23 값을 F22 에 넣습니다. 수식이 아니라 값이라는데 유의하세요.
이렇게 되면 엑셀 파일을 언제 열든 수식이 재계산이 되든 I23 은 동일합니다.
다만, 이전에 작업하던 I22 를 고려하면 더 큰 값을 알아야 겠죠.
이번 작업을 하기 위해 자원상으로 보면 10분이 남았지만, 이전 작업이 1시간 짜리였고 앞으로도 20분이 남았다면..
이 둘 중 더 오랜 시간이 소요된 이후의 시간이 필요하죠. 이것이 I24 입니다.
그런데, 시간이 오래 걸리다 보니 꽤가 납니다. 장터에서 필요한 물건을 조달해 온다면..?
그래서 교역 내용이 들어 있습니다.
H4:K4 에 교역 내용을 입력하면 교역후에 소요되는 시간이 나옵니다. 이것이 F25 입니다.
업그레이드 중인 작업과 비교한 최종 시간이 I25 이고요.
그런데, 눈치 채신 분도 계시지만, 교역하는 데도 시간이 많이 소요됩니다.
여기에서는 교역에 필요한 시간이 아직 반영되지 않았습니다.
소요시간을 보고 그 시간 이내에 교역이 되는 조건만 응하면 되기 때문에 필요하지 않다고 생각한 거죠.
나중에 이 부분의 보완이 필요하면 수정해서 다시 올리겠습니다.



#상황2. 이제 눈좀 붙이려고 하는데 도대체 내가 약탈을 당하지 않고 버틸 수 있을까..?
           이런 고민 없이 편안하게 잠들려면 이 방법을 씁니다.
           설명이 길어지니까 답만 적으면, B16:E16 를 보라는 것입니다.

물론 비밀창고를 지었을 때의 이야기 입니다.
위의 그림을 보면, B24:B26 에 비밀창고가 1개 있고 레벨이 9인 것을 알 수 있습니다.
현재는 부족에 따라 자동으로 변하게 하지 않았지만, 나중에 필요하면 그런 조치도 되어야 겠지요.
암튼, 현재 F3:F4, F15:F16 까지의 수식에는 갈리아족인 경우의 비밀창고 수치를 가져옵니다.
갈리아족이 아니라면, F3:F4, F15:F16 까지의 수식에서 vlookup 의 3번째 파라미터값 '9' 를 '8' 로 모두 변경하세요.
현재 보유량을 기준으로 약탈이나 공격을 받았을때 털릴 수 있는 자원의 수치가 B3:E3 에 표시됩니다.
물론 글자색이 빨간색인 경우 약탈이 되는 수치입니다. 검은색 글자색일 때는 약탈이 되지 않습니다.
튜턴족의 경우 비밀창고의 1/3 선을 가져갈 수 있기 때문에 2/3 선을 넘길 때만 글자색이 빨갛게 변합니다.
지금 자면 6시간 뒤에 일어날 텐데 그 사이에 자원을 약탈 당할까..? 얼마나 약탈 당할까..?
B13 셀에 숫자 6을 입력하고 B15:E15 를 보세요.
해당 셀의 글자색이 빨간색으로 바뀐다면 약탈을 당한다는 겁니다.
참고로 얼마나 약탈을 당하는지는 반영하지 않았습니다. 비밀창고의 2/3 선을 빼면 나오겠지요.
일단 약탈당하지 않는 것이 목표이기 때문에, 약탈되는 양을 알 필요가 없어서 염두에 두지 않았습니다.
나중에 필요하면 넣도록 하지요.. ^^>
그리고, 만약 교역으로 자원을 내어 놓은 상태라면 그만큼은 약탈 대상에서 제외됩니다.
물론, 누군가 교역에 응하면 약탈 대상이 되겠지만 교역에 응하지 않을 정도로 비싸게 내 놓으면 됩니다.
자원량이 많다구요..? 상인의 수가 많으면 자원을 한번에 더 많이 내 놓을 수 있기 때문에 염려하지 마세요.
그러면 지금 외부에 나갔다가 다시 들어오면 3시간 걸리는데 이럴때는..?
마찬가지로 B13 에 시간의 수치를 입력하고 B16:E16 을 확인해 보세요. 글자색이 빨갛게 변했나요..?



#상황3. 어떤 건물을 먼저 지어야 할까요..?
           어떤 빌드 트리로 가야 한다고 설명하는 것은 어려운 일이지요.
           다만, 건물을 짓기 위해 자원이 모이는 시간 동안 약탈을 당하지 않으란 법이 없으니..

저는 조만간 제분소를 지으려고 합니다만 이때 필요한 작물이 자그마치 1,240 입니다.
비밀창고가 몇렙 이어야 튜턴족의 침입에 약탈당하지 않고 안전하게 자원을 관리할 수 있을까요..?
A9 에 '제분소01' 을 선택해 놓습니다.
L16 을 보세요 몇시간이라고 나오나요..? 해당 시간을 B13 에 넣어 보세요.
와우, B15:E16 이 모두 빨간색 글자로 바뀌나요..?
그러면 이제, B24 에 수치를 넣어 봅시다.
B24 에 10 을 입력했는데도 비밀창고 하나로는 안 되나요..? 그러면 B25 에도 수치를 넣어 보세요.
B25 에 10을 입력했어도 글자색이 빨갛다면..? B26 에도 수치를 넣어 봐야죠..
글쎄 이렇다니까요. 제분소 하나 지으려고 몇시간 동안 약탈에 대비해야 합니다.
병력을 키워서 대응해도 되겠지만, 강한 군대가 오면 내 병력만 죽어나가고 약탈도 당하고 ㅠ.ㅠ
그러면 비밀창고를 더 지어야죠. 처음에는 비밀창고를 1개만 지을 수 있는줄 알았습니다.
그래서 마을 하나 더 만들고 거기에 비밀창고를 지으려고 했는데.. 비밀창고는 마을 단위로만 적용된다는 군요.
모든 마을의 비밀창고 수치만큼 한곳에서 자원을 숨길 수 있는 것이 아니라는 거죠.
아주 낙담을 했었는데, 비밀창고 하나를 10 레벨까지 지으면 동일 마을에 비밀창고를 몇개 더 지을 수 있더군요.
아직 초보라서 비밀창고를 최대 몇개까지 지을 수 있는지는 모르겠는데..
아무튼, 갈리아 족이 비밀창고 용량이 크니까.. 이때 로마족을 청산하고 갈리아족으로 다시 키우고 있습니다. ^^>
갈리아족이면 비밀창고 1개만 10렙으로 지으면 튜턴에게 자원을 약탈당하지 않고 제분소를 지을 수 있네요.
여기에서는 비밀창고에 대해서만 설명했습니다.
병력이 있는 경우 병력을 어디에 다녀오게 해 놓아야(플릿 이라는 용어로 설명을 하더군요)  하는지는 더 해 보고 반영할 생각입니다.
어느 세월에 하게 될 지는 저도 모릅니다. ㅠ

제분소를 왜 짓냐구요..? 나중에 내 비밀창고 부수려고 투석기 들어오면 내게도 병력이 있어야 합니다.
병력을 유지하려면 식량이 필요한데, 제분소를 지으면 농지에서 얻는 작물에 몇 % 비례하여 더 생산되지요.
제과점도 있고 하지만, 당장은 제분소가 비교적 저렴하지요.
다른 마을이나 오아시스에서 자원을 가져온다고요..? 그럴때도 병력이 필요하죠. ㅠ
기본 자원 타일에 농지가 6개 있으니까 렙10 이 6개밖에 없는데,
병력 유지하고 건물짓고 뭐 하고 뭐 하려면 이렇게 추가적인 보너스 생산요소를 주는 건물이 필수죠.
아, 그리고 비밀창고에서 2,000 을 보유한다고 해도.. 곡물창고가 1,200 이면 어떻게 될까요..?
암튼, 고려할 것은 많고 엑셀 파일에 기술되지 않은 부분들도 많네요.
아직은 경험 미숙으로 엑셀 파일의 구성요소가 일천합니다.
더 경험해 보고 계속 업데이트를 해 나가겠습니다.

Data1 에 있는 데이타 말인데요. 각 부족에 따라 수치가 달라지는 것도 있더군요.
일단 갈리아 족에 맞췄습니다. 갈리아족 경험이 어느정도 쌓이면 다른 부족들에 대해서는 다루어야 겠지요..?

긴 글 읽어 주셔서 감사합니다.

Trackback 0 And Comment 7
  1. Favicon of https://rabbitchris.tistory.com BlogIcon 래빗 크리스 2009.03.23 03:39 신고 address edit & del reply

    약탈에 더 비중을 두는 분은 사용하지 마시기를.. ^^>

    갈리아족도 자원이나 건물은 모두를 통털어 한번에 한개만 업그레이드(생산)할 수 있지만, 업글이나 생산하고 있는 중에 병력을 뽑을 수는 있습니다.

    Data1 워크시트는 모든 내용이 들어간 것이 아니라서 필요한 부분은 직접 입력하세요. 영문 FAQ 사이트에 가면 수치가 노출되어 있습니다.

    '이번 작업' 을 하고 나면 현재 보유중인 자원이 필요한 만큼 감소되는 부분은 아직 작업하지 않았습니다. 더 필요해지면 하려구요.. ^^> 그런데 이 기능을 넣으려면 매크로를 이용해야 하는데, 매크로는 되도록 사용하지 않으려구요. 매크로 바이러스가 심겨질 수도 있어서.. ㅠ 그리고 그 사이 자원 수치가 또 변하거든요.

  2. Favicon of https://rabbitchris.tistory.com BlogIcon 래빗 크리스 2009.03.23 04:46 신고 address edit & del reply

    * 종족 특성

    - 튜턴
    군대 양성시 목재(Wood/Lumber) 필수

    - 갈리아
    군대 양성시 점토(Clay) 필수

    - 로마
    군대 양성시 철(Iron) 필수

  3. Favicon of https://rabbitchris.tistory.com BlogIcon 래빗 크리스 2009.03.23 21:15 신고 address edit & del reply

    * 엑셀파일 업데이트 일지

    - 2009.03.23 21:15 v0.13 시간계산 오류 수정3. 분이 모이면 시간이 되네요.
    - 2009.03.23 20:33 v0.12 시간계산 오류 수정2. 시간이 모이면 하루가 넘어가네요.
    - 2009.03.23 12:47 v0.11 시간계산 오류 고치고, Data1 워크시트에 데이타 추가.

  4. MoonShine 2009.03.23 21:53 address edit & del reply

    잘봤습니다.전 간단하게 자원계산기 만들어서 대충 쓰는데 장터거래와 자원타일 완료시기까지 염두에 두시고 하셨네요.장터거래말고는 자원생산완료시기에 큰 차이가 현재로선 별로 없네요.대충 현재 자원과 생산량으로 맞춰서 하고 대충 그때쯤 들어가면 다 되어 있을테니까요.어차피 트라비안하면서 정확한 시간에 접속은 힘들테니 말이죠ㅎ
    암튼 프로그램 잘 쓰겠습니다.저도 나중에 괜찮은 프로그램 만들던지 하면 보내드릴게요^^;;

  5. 즐이삼여 2009.04.26 16:42 address edit & del reply

    저같은경우는 아직 초보자 보호막이있어서 크게 신경쓰고 있진 않지만 보호막이 사라지면 크게 유용할듯 싶네요 ㅎㅎ

    • Favicon of https://rabbitchris.tistory.com BlogIcon 래빗 크리스 2009.04.26 17:00 신고 address edit & del

      초보자 보호막 풀리면 여기저기서 약탈이 들어올 겁니다. 그냥 그런가보다 하시면 될 듯합니다. 다만, 약탈이 목적이 아니라 건물을 파괴하려고 하는 분들이 간혹 계시니까.. 어느정도 규모가 되시면 동맹에 가입해 주세요.. 동맹에 가입할 때는 거리상 가까운 곳에서 동맹을 구하시는 것이 좋을 것같습니다. ^^

prev | 1| 2| 3| 4 | next