2018. 3. 24. 23:15

안녕하세요 "타이니스타" 입니다. 이번에는 엑셀에 대한 글을 쓸까 합니다.

많은 사람들이 엑셀에서 단순히 시트작업을 하고 있습니다.

한개의 셀을 선택해서 =if(A3 >= 70, "합격", "불합격") 혹은 =sum(A3:A5)  등의 수식을 입력하여 원하는 결과를 돌려받게 됩니다.

이러한 기능들로도 업무적으로 많은 도움을 주는게 ms-office 입니다. 하지만 여러분이 생각하는 것보다 엑셀이라는 녀석은 굉장한 능력을 지녔습니다.

단순히 값을 넣고 계산하는 것으로 끝나는 게 아니라 여러분이 직접 간단한 프로그램을 만들 수 있다면 어떨까요?

이 카테고리에서는 간단하게 엑셀을 이용한 프로그램 작성방법 및 활용법을 채워나가려 합니다.  한참 하던 시절이 11년전이니 많이 부족할 수 있으나 기본적인 내용들을 채워나갈 예정입니다. 


VBA 를 통해 엑셀에서 코딩하는 절차부터 간략히 적어보겠습니다.

오피스 프로그램 중 엑셀을 실행시키고, 엑셀 창에서 Alt + F11 을 누르면 Microsoft Visual Basic 이라는 창이 뜨게됩니다.  이 창의 좌측에는 프로젝트 - VBAProject 창과 하단에 속성 - 창이 있음을 확인 할 수 있습니다.

여기서 프로젝트 창에 Sheet 정보가 나옵니다.  그 아래 여백의 공간에 우측 클릭을 하여 삽입을 통하거나  메뉴바에서 삽입 메뉴를 통해 Module 을 만들어줍니다.  생성을 하면 프로젝트 창에 모듈이 생성되고 화면에도 흰색의 공간이 나타날 겁니다.

이곳에

sub msg()

    msgbox "Hello! Excel VB World!!!"

end sub


라고 입력을 한 후에 f5 키를 눌러줍니다.  VB 의 실행은 F5로 이뤄짐을 명심하세요~

또한 코드 입력 시 에러가 발생하면  Alt+F11 키를 눌렀을 때 나온 창에서  재생, 일시정시, 정지 를 뜻하는 아이콘을 메뉴바 주변에서 발견할 수 있을텐데 여기서 정지 아이콘을 눌러서 정지 후 수정하여 다시 실행하시면 됩니다.

입력을 잘 마치셨나요?  화면에 메시지 박스가 출력됨을 확인할 수 있습니다.


축하드립니다.  엑셀 VB 코딩의 세계에 오셨군요 ^^ 

P.S   제 강의에서 사용되는 코드는 일반 visual basic 에서도 사용이 가능합니다.  전부는 아닐지 몰라도 같은 명령어를 기반으로 하기에 대부분 호환이 될겁니다.

Posted by 타이니스타
2018. 3. 23. 14:37

안녕하세요 "타이니스타" 입니다.   저는 10년도 더 이전부터 네이버 포탈 시스템의 지식인 서비스를 이용해 왔는데요.

얼마전에 네이버 지식인 식물신 등급을 달성했습니다 !  여러 카테고리에 답변을 달았는데요.

그 중에 가장 열심히 답변했던 데이터베이스 분야에서의 지식 답변들 중 다른분들이 궁금할만한 내용을 추려서 글을 올리려 합니다. 

식물신

 식물신 아이콘이에요~  등급 : 식물신,  시작일 : 2006.03.08,  순위 : 상위 1만명(0.0154%) 이내,  주요활동 분야 : 데이터베이스, 사람과 그룹, 주거살림.   2018.03.21  일자  기준으로 상위 0.0154% 군요 ㅎㅎ

참고로 저는 현재 N포탈 데이터베이스 지식인 10위에 올라있어요~ 상대적으로 주류에 속하지 않으므로 순위가 높은편에 들어가고 있습니다. ^^

지식인 답변모음 1번에서 14년 6월 4일까지 했었고, 이후의 답변 추려봤습니다.


------------------------------------------------------------------------------------------------------------------------


질문 제목 : MS SQL에서 VIEW에 JOIN이 최대로 몇개까지 가능한가요?

내용 : VIEW가 JOIN방식으로 되는거라고 들었습니다.

JOIN은 최대 몇개까지 가능하고 VIEW에는 몇개까지 조인이 가능한지 알고 싶습니다.

지금 SQL Server2008로 101개까지 노가다로 조인해봤는데 이상없이 조인이 되네요


답변 : 조인의 최대 개수를 누군가 명시해 놓은 자료가 있을 수 있겠으나 찾기도 힘들뿐더러 필요한 정보가 아닙니다.

index 설정의 경우 250개. 255개. 라는식으로 명시된 자료가 있으나 그정도로 인덱스를 설정하지 않듯이

조인도 그렇게 많은 테이블을 사용하진 않습니다.

갯수에 제한이 있다면 인덱스와 마찬가지로 250여개 쯤 되지 않을까 추측해 봅니다.


view 가 조인 방식으로 되는걸로 들었다고 하였는데 그 이유를 아는게 더 중요합니다.


view 는 가상의 테이블로 실제로 생성되어있는 테이블 혹은 뷰에 있는 데이터를 토대로 만들어지는 가상의 테이블이며 view 를 만들기 위해선 한개 이상의 테이블이 필요합니다. 뷰는 여러 테이블을 join 하여  특정 용도의 정보를 가지게 되며 그 정보를 from 절에 기술하여 불러옴으로 사용할 수 있는겁니다.

뷰를 생성하지 않고도 뷰의 내용을 가져올 수 있으며 뷰를 생성할 때 작성하는 sql 을 인라인뷰로 작성하는 방법이 있습니다.


인라인뷰는 from 절에 작성하는 서브쿼리의 일종으로서 뷰에 더 가까운 개념으로 생각하면 됩니다.


뷰를 만드는 이유는 특정 정보를 갖는 가상의 테이블이 여러개의 쿼리에서 사용되어질 것이라 판단되는 경우

각 쿼리에 같은 내용의 인라인뷰를 만들기보다는 하나의 뷰를 만들어서 공통으로 관리 및 활용하기 위해 만들어집니다.


뷰로 만들지 않고 인라인뷰로 계속 만들어 사용할 경우 코드가 길어져서 가독성이 떨어지고 코드 관리에 불리한 점이 발생할 여지가 다분하기에 뷰로 만들어 사용하게 되는겁니다.


또한 글쓴이의 의도대로 여러 테이블을 조인하여 뷰를 작성할 경우 속도가 떨어지기에 결코 수많은 테이블을 조인하진 않습니다.

원하는 출력결과를 얻기 위해 억지로 조인을 할 수는 있겠으나 설계상의 복잡함은 물론이거니와

성능의 저하가 필연적으로 따라오게 되며 그럴 경우 설계단계에서 이미 잘못된 것입니다.

 

결론적으로 최대 개수는 250개라고 추측이 되며 정확한 값을 아는 사람은 실무에서도 별로 없으리라 생각됩니다.


중학교 수학에서 pi 라는 값을 배우셨나요? 3.14 입니다.

소수점 이하로 더 말해보자면  3.141592653589793.....

이런식으로 계속 나아갑니다. 여기서 우리는 3.14 만 알면 되고 뒤의 값은 필요가 없듯이


최대 몇개까지 가능하냐에 대한 의문은 접어두는게 낫다고 봅니다.

마지막으로 쿼리 작성에 가장 중요한 점은 원하는 결과를 가장 빠른 속도로 보여주는 것입니다.

질문에 대한 답이 아니라 다른소리를 늘어놓았으나 도움이 되길 바라며 글을 남깁니다.


* 최대 개수에 대한 정보를 포함하고 있군요.  제가 지금까지 쿼리를 짜면서 저렇게 수십개를 초과하는 조인이 필요한 적은 단 한번도 없었습니다.  그런 경우가 발생한다면 처음부터 DB설계를 잘못했을 가능성이 높겠습니다.

------------------------------------------------------------------------------------------------------------------------

질문 제목 및 내용 : SQL문!!!

SQL문의 (성격, 특징, 레코드삽입, 레코드삭제, 테이블삭제, 업데이트, 검색)이 먼지 알고싶고,

그리고 SQL문의 예시하나 들어주세요.


답변 : 질문이 참 그러네요. 과제인가 싶네요

성격이라.. 표현하기 힘드네요 철학적인 질문에 가깝게 느껴집니다.


sql문은   작성된 실행문에 따라 굉장히 효율적인 처리결과가 나오거나 매우 비효율적인 처리결과가 나오는 극단적인 성격을 지녔습니다.   같은 결과를 만들어낸다고 하더라도 성능을 고려하여 작성한 쿼리의 경우 매우 빠르게 처리되어 시간 및 비용을 감소시키는 반면,  부적절한 쿼리의 경우 불필요한 비용을 발생시키고 잘못하면 중요 데이터가 날아가는 등의 사고가 발생할 수 있습니다.


특징으로는  sql문 작성자의 실력에 크게 영향을 받는다는 것과 굉장히 논리적인 구조로 되어있다는 점이 있습니다.


레코드 삽입 - insert into 문을 통해 특정 테이블에 데이터를 추가하는 작업입니다.

레코드 삭제 - delete 문을 통해 특정 테이블의 데이터를 삭제하는 작업입니다.

테이블 삭제 - drop 명령을 통해 테이블을 날려버리는 작업입니다.

업데이트    - update 문을 통해 특정 테이블의 조건에 맞는 데이터를 수정하는 작업입니다.

검색        - select 문을 통해 특정 테이블의 조건에 맞는 데이터를 출력하는 작업입니다.


select eno, ename

from emp

where deptname = '영업'

이라는 sql 이 검색의 select 문을 이용한 쿼리입니다.


emp 라는 사원정보 테이블에서 from emp <- 이부분

select (선택한다) eno (사원번호), ename(사원명) 을. 선택하여 출력한다.

영업 부서에 속한 정보중에서  ->  where edeptname = '영업'  <-  이부분


즉, 위의 쿼리는 영업 부서에 속한 모든 사원의 번호와 이름을 불러온다는 뜻입니다.

성격 이나 특징의 경우 철학적인 질문이기에 명확한 답을 드릴 수 없습니다.


만약 과제라면 과제를 내주신 분의 의도가 무엇인지 담거나 수업 내용에서 강조한 내용을 참고하여야 할듯 싶습니다.


* 지식인 활동을 하다보면 공부를 하거나 문제를 해결하면서 발생한 질문이 아닌 과제에 대한 답을 구하는 경우가 종종 있는데요, 질문의 내용, 글에 묻어나는 정성이나 답변할 대상에 대한 존중어린 말투 등에 따라서 단순히 도움주려고 질문만 보는데 기분이 상할때가 있습니다.  데이터베이스의 경우 어느정도 전문적인 지식이 필요하므로 장난성 혹은 툭 던지는 듯한 말투를 자제하고, 문제 줄테니 답주세요.  느낌의 무성의한 질문도 피하는게  도움을 구하는 입장에서도, 도움을 주려는 사람의 입장에서도 서로 좋겠죠?  

------------------------------------------------------------------------------------------------------------------------

질문 제목 : sql 예제 해석부탁드려욤

내용 : select Emlid, Dept

from ASSIGNMENT, JOB

WHERE ASSIGNMENT. Jobid = JOB.JOBID

         and ASSIGNMENT. TermData = "*"


insert into EMPLOYEE

values ('43212', ' Sue A. Burt', 33 Fair St.', '444661111')


delete from EMPLOYEE

where Name = 'G. Jerry Smith'


update EMPLOYEE

set Address = '1812 Napoleon Ave.'

where Name = 'Joe E. Baker'


답변 : 1. select Emlid, Dept   :  두개의 컬럼을 출력하라

from ASSIGNMENT, JOB     어싸인먼트, 잡 테이블에서 데이터를 가져와서

where 절    :  어싸인먼트 테이블의 직업id와 직업 테이블의 직업id 가 같도록 조인(연결) 한 데이터로 간추리고   어싸인먼트 테이블의 텀데이타 값이 * 값인 데이터들만 나오게 하라.


2. employee 테이블에 데이터를 입력하라.

괄호안의 순서대로 (첫번쨰 컬럼 값 = 43212, 두번째 컬럼값 = Sue A. Burt   이런식으로 값이 들어가는것이며

테이블의 컬럼들을 명시하지 않은경우 모든 컬럼에 값을 대입해줘야 명령어가 정상실행.


3. 지워라 empoyee 테이블에 있는 데이터를. 

무엇을 지우는가?  이름이 G. Jerry Smith 인 데이터 전부를


4. 수정하라. empoyee 테이블을

주소 컬럼의 값을 1812 Napoleon Ave. 로 수정하라는 뜻이며  이름이 Joe E. Baker 인 데이터의 주소를

변경하라는 조건식이 where 절에 명시되어 있음.

* SQL 문의 기본이 되는 select, insert, delete, update 쿼리 구문이었습니다. select 구문의 경우 조인 연산을 포함하고 있군요.  SELECT 쿼리를 잘 보면  from 테이블명, 테이블명  이라고 명시가 되었고, 이 둘간의 관계를 where 조건절에서 테이블.컬럼명 = 테이블.컬럼명 과 같이 조인연산으로 이어주고 있는데요, 이와같은 표기는 dbms 중 오라클 에서 주로 쓰이는 문법이고, inner join 연산을 수행하라는 의미를 갖고 있습니다.

기본이 되는 쿼리인만큼 이 질문/답변도 가져와봤습니다.

------------------------------------------------------------------------------------------------------------------------

이상으로 14.06.16 까지의 답변이었고, 꾸준히 이어나가겠습니다.  데이터베이스와 관련해서 간단한 질문정도는 언제든지 환영하며, 제가 모르더라도 여러 루트로 알아보고, 배운뒤에 답변을 도와드리도록 하겠습니다. 혹 부족한 답변이 보인다면 언제든 조언 및 지적 환영합니다.


Posted by 타이니스타
2018. 3. 22. 22:00

안녕하세요 행복을 전하고픈 "타이니스타" 입니다.  

여름이 다가오니 겨울동안 보온에 도움이 되었던 체지방을 걷어내야 하는지라 다이어트를 계획하게 되었어요~.

다이어트는 식단조절과 운동이 병행되었을 때 정말 효과가 크게 나타나게 되는데요.

운동을 시작하기에 앞서서 평소에 과식 및 폭식으로 늘어난 위를 줄이기 위해서 식단조절의 일환으로 다이어트 쉐이크를 샀습니다. !

청춘푸드에서 만든 "리얼 카카오닙 다이어트 쉐이크" 인데요. 카카오분말 10% 라고 써있습니다.

카카오닙은 TV 건강프로그램에서 수차례 소개된 견과류인데요, 초코릿의 주 성분인 카카오 열매의 알맹이가 카카오빈이고, 카카오빈을 발효 건조시킨 뒤에 잘게 부순 것으로서 슈퍼푸드로도 불릴만큼 건강에 좋다고 합니다.  

또한, 식이섬유와 카카오가 함유된 다크초콜릿에 들어있따는 폴리페놀, 카테킨이 함유되어 체중감량에도 효과적이기에 더더욱 다이어트 쉐이크의 성분으로 알맞은 제품이죠.  다이어트 쉐이크를 이거저거 찾아보다가 카카오닙스란 말에 바로 선택한 제품이에요.~


대량 구매에 앞서, 무엇보다 먹을만한가가 중요하기에 한상자가 구매했습니다. 개봉하니 두 줄로 담겨있네요~  

7*2 총 14봉이 담겨있습니다.  보름은 먹을 수 있는 양이죠ㅎㅎ  깔끔한 포장이 마음에 드는 개봉상태입니다.


쉐이크 봉지를 한번 꺼내들어 봤습니다. 포장지에 프린팅된 초콜릿이 먹음직스럽네요ㅎㅎ  맛있겠다고 생각하다가 카카오닙이 들어갔음을 다시한번 상기시키니 맛은 음.. 없겠구나 싶더군요ㅎㅎ  카카오닙스를 자주 먹어봐서 아는데 맛은 정말 없답니다..  씁쓸~하고 또 씁쓸~한 맛이에요.


식품 유형은 체중조절용 조제식품 이구요,  권상섭취량섭취방법1일 1~2회, 1회1포(25g)를 120kcal 이상의 우유 또는 두유 200ml에 잘 섞어서 섭취하십시오.  라고 써있군요.  주목할 점은 120kcal 이상의 유제품과 먹으라는 점인데요, 식사 대용으로서 최소한의 칼로리는 섭취하라는 의미로 적힌게 아닌가 추측이 되는군요.

이 제품은 유제품 없이 단독으로 봤을때 85kcal에 달하는군요. 나트륨, 탄수화물, 당류, 지방, 트랜스지방, 포화지방, 콜레스테롤 등은 권장비율이 낮아서 몸에 안좋은 성분이 적다는걸 알수 있구요.  식이섬유, 단백질, 비타민 각종 미네랄이 꽤 비중있게 함유된걸 확인할 수 있어요. ㅎㅎ


박스 포장지의 뒷면에는 "리얼 카카오닙 다이어트 쉐이크" 를 소개하는 내용으로 채워져있군요. 섭취 방법은 위에서 살펴본 바와 같이 쉐이크에 유제품을 섞으면 된다고 짧지만 분명하게 나타내고 있습니다.  바로 아래에는 카카오란? 으로 시작하며 카카오에 대한 설명이 이어집니다.  

"카카오는 카카오나무의 열매로서 단백질과 식이섬유, 필수지방산, 미네랄로 구성되어 있으며, 흔히 먹는 초콜릿(코코아)의 주 원료가 되는 식품입니다. "  카카오닙에 대해 한번이라도 관심있게 찾아보거나 정보를 접한 사람이라면 어느정도 알만한 내용이 들어가 있구요,  추천 대상으로는 "체중조절로 고민이신 분,  운동과 다이어트를 병행하시는 분" 으로 구분짓고 있습니다.  저에게 딱 맞는 제품이군요 ㅎㅎ  :)


영양성분은 박스 옆면에도 표기가 되어있는데, 표기방식이 흡사 씨리얼을 보는듯 합니다.  유통기한약 1년 6개월 정도로 제법 긴 편입니다. 보관방법 역시 직사광선을 피하고 고온다습하지 않은곳에 보관하기만 하면 되므로 오랫동안 손쉽게 보관하며 섭취가 가능함을 알 수 있습니다.


갑자기 사진의 배경과 색상이 달라졌죠? 회사에서 찍어서 색상이 더 밝아졌을거에요. 이건 해당 제품을 구매하면서 서비스로 함께온 하루카카오인데요, 하루견과 느낌으로 출시된 제품인가봐요.  보면 알겠지만 아몬드처럼 카카오빈이 통으로 들어가 있는 제품이에요. 포장지의 하트도 눈에 띕니다. ㅎㅎ


왼쪽은 꺼낸 직후의 모습이고, 오른쪽은 꺼내서 껍데기를 벗겨놓은 상태의 카카오빈이에요. 아몬드보다 약간 크고, 조금은 뭉툭한 느낌입니다.  카카오빈의 껍데기가 흡사 초콜렛같지 않으신가요? ㅎㅎ  카카오닙스는 사실 제법 흔한편이라서 많은분들이 봐왔겠지만, 카카오빈은 처음보는 분도 있을거라 생각되네요.  저처럼요 !


카카오빈은 반쯤 깨물은 모습인데, 속도 초콜릿을 닮은 브라운 계열의 색을 품고 있군요.  건조시켜서인지 반쯤 깨무는 충격에도 여러갈레로 깨져나간 모습입니다.  

식감이 어떨지 예상 될지 모르겠군요.  상당히 건조한 견과류 느낌입니다.  아몬드나 호두, 땅콩 등은 씹을때에 약간 뭉개지는 식감이 느껴질정도로 수분을 품고 있으나 이건 바싹 마른 식감이에요.


하루 카카오의 성분함량은 열량 130kcal, 탄수화물, 당류, 단백질, 지방 및 포화지방 등으로 이뤄져 있는데, 아무래도 견과류의 특성상 지방질 함량이 높은걸 알 수 있습니다.  

카카오빈을 포함한 대부분의 견과류는 적정 권장섭취량이 있으므로 주의해서 섭취하시기 바랍니다.


자, 이어서 카카오닙 다이어트 쉐이크를 위해 이번에 구입한 쉐이크통과 우유나 두유 등 유제품을 대체할 아몬드 브리즈, 그리고 주인공인 카카오닙 다이어트 쉐이크를 준비했어요. 

아몬드 브리즈는 아시는 분들은 모두가 알만한 제품인데, 이 제품 역시 다이어트에 도움되는거로 유명해요.


세계 최대의 아몬드 전문회사인 블루다이아몬드 "아몬드를 잘 아는 3,000여 명의 전문가들과 100년 이상 축적된 노하우를 바탕으로 전 세계 30여 개국의 소비자들로부터 사랑받고 있는 아몬드 제품을 만들고 있습니다." 라고 제조사를 소개하고 있군요.  이름을 제법 잘 지었다는 생각이 듭니다 :)

우유처럼 마시는 아몬드 브리즈는 무엇보다 칼로리가 한팩에 45kcal 라는점이 가장 큰 특징이에요. 처음에 두 눈을 의심했다죠ㅎㅎ 아몬드로 이런 유제품을 만들수 있다는 점과, 칼로리가 굉장히 낮다는 점 등이 놀라웠어요.


쉐이크통에 아몬드 브리즈를 채워넣고, 그 위로 카카오닙 다이어트 쉐이크를 넣었습니다.  분말 입자가 아주 곱기때문에 탈탈 털어 넣었습니다.  털면서도 미세한 분말가루가 공기중에 날리더군요ㅎㅎ.  아낌없이 털어드리리..!


자~ 이제 쉐이키 쉐이키~!  쉐이크통의 뚜껑을 닫고 신나게 흔들어줍니다ㅎㅎ.  흔들면서 보이는 저 검은 알갱이들 보이시나요?  저게 바로 카카오닙스 입니다. 카카오닙스가 꽤 많이 들어있더군요.  쉐이크를 완료하고 한입 먹어봤는데요.

음.. 단백질보충제보다는 조금 낫지만 썩 유쾌한 맛은 아닙니다. 우유나 두유가 아닌 아몬드브리즈를 넣어서 그런걸까요?ㅎㅎ  카카오닙스가 따로 놀아서, 딱딱한 견과류 알갱이를 쉐이크와 함께 먹는데에 부담이 없는 분이라면  섭취에 있어서 별다른 어려움은 없을거 같습니다.  제 입맛에는 그래도 제법 맞는군요ㅎㅎ.

좀 더 먹어보고 추가구매 할지를 고민해봐야겠습니다.


이상으로 "리얼 카카오닙 다이어트 쉐이크"에 대한 저 "타이니스타"의 관대하지만 솔직한 후기였습니다.

읽어주셔서 감사합니다. 오늘도 행복하세요!



Posted by 타이니스타