지배하는 자 Vs. 지배당하는 자

작성자
dra****
작성일
2021-06-27 11:11
조회
196

규모가 있는 회사에서 임원급으로 승진 시키려 하는 직원들은 순환보직을 많이 줍니다. 회사가 어떻게 돌아가는지 모두는 아니지만 경험하라는 것이지요. 그래야 회사를 경영할 수 있는 능력이 생깁니다.

엑셀을 사용할 때 우리는 마소가 만들어 놓은 함수를 사용합니다. 그래서 사용자를 "End-User"라는 말을 씁니다.
사용자들은 선택의 여지가 없습니다. 그들이 만들어 놓은 것을 활용하는 방법 밖에.
개발자들은 그 함수를 어떻게 만드는지를 이해합니다. 그래서 자신만의 함수를 만들어 사용합니다.

엑셀은 시트의 셀 위에서 해결해야 하기에 제약이 많이 있습니다.
반면 파이썬, 자바, C++, C#, 자바스크립트 등은 제약이 없습니다. 개발자가 원하는 방식대로 만들면 되니까요.
웹을 방문하는 사용자는 그 개발자가 의도한 데로 움직여야 하는 심한말로 꼭두각시가 되는 것입니다. 사용자들은 본인이 명령하고 웹이 그대로 반응하니 본인이 지배한다 착각을 하고 있는 것입니다.

개발자가 만들어 놓은 함수를 사용하면 매우 편할 것입니다. 공부하지 않아도 되고, 그냥 사용하기만 하면 되니까요.
그런데 업무를 하다 보면 개발자의 함수들이 자신이 원하는 방향으로 작동을 하지 않는다면 노가다(?)를 해야 할 것입니다.

그러한 함수를 개발할 능력 또는 적어도 원리를 이해하고 있는 상태에서 함수를 사용하는 것과, 아무런 이유도 모른채 그런가보다 하고 사용하는 것은 하늘과 땅 차이입니다. 모르는 채 사용하면, 시간이 지날수록 의존도가 높아지면서 결국에는 노예가 될 것입니다. 본인은 업무를 하고 있으니 못 느낄것입니다. 그러다 그 함수가 어느 날 제기능을 하지 못한다면? 업데이트나 새로운 윈도우 버전에서 더 이상 지원을 안한다면? 얼마전 ActiveX 때문에 32비트로 개발한 앱에서 DatePicker를 썼다가 코딩을 다시해야 하는 불상사가 생겼습니다. DatePicker는 64비트에서 지원을 안 합니다. 이미 인지를 하고 있었음에도 불구하고 무심코 사용한 것입니다. 제 컴퓨터에서는 잘 돌아가지만 다른 분들의 컴퓨터에서는 작동을 제대로 하지 않는 것입니다. 심지어 엑셀 2007 정품버전을 쓰고 계시는 분들도 있었습니다. 비용이 또 들어가니 업데이트를 안하고 계셨다는...

개인적으로 엑셀 시트 함수를 거의 사용 안하고, 기껏해야 문자열 결합 정도만 사용하고, VBA로 완전(?) 전향을 한 이유가, 내가 원하는 데로 코딩을 하고 싶기 때문이었습니다. 즉, 마소에 엑셀이라는 프로그램을 사용하고 있어 이미 지배 당하고 있지만, 최소한의 영혼은 지배 당하기 싫은 마음인지도 모르겠습니다.

요즈음 파워쿼리와 "M" 언어를 이용한 자동화 공부를 하고 있는데, 문득 "마소가 각종 함수를 어떻게 구현했을까?" 하는 생각이 들더군요. 가령 SUM() 함수가 있으면, 해당 열을 모두 더하는 로직을 쓰는 것이 아니라 SQL의 SUM() 함수를 써서 구현하고 있다는 결론에 도달 했습니다. 제 결론은 아무런 근거가 없는 단순 개인적인 경험상의 결론입니다. 다만 파워쿼리로 구현할 때 Table로 만들어 두지 않은 데이터들은 인식을 못하고, 표에는 자동 합계와 같은 기능이 기본 내장되어 있는 것을 보고 그럴것이라는 개연성이...  Loop를 돌면서 하면 그렇게 빨리 계산이 나올 수 없습니다. 하지만 DB 엔진을 쓰면 가능한 이야기 입니다. 갑자기 모든 데이터 처리는 SQL로 하는 것이 타당하다 싶더군요. 시트의 자료를 표로 만들면 ListObject가 되는데 이 녀석이 QueryTable로 변환이 가능합니다. 그러면 SQL 사용이 매우 쉬워 집니다.

엑셀로 SQL을 다룰 때 저의 최대 난제는 각각의 소스 데이터에 접근 하는 방법을 구현하는 것이었습니다. 이 부분에 대해서 설명이 자세히 나와있는 자료를 제대로 구하지 못한 관계로 꽤 오랜 기간 고민하고 자료 수집을 했습니다. SQL 언어 자체가 어려운 것이 아니라 DB에 접근하는 방식이 어려웠던 것입니다. 이것이 어느 부분 해소(?)가 되니 새로운 관점으로 엑셀을 바라 보게 됩니다. 마소가 던져 주는 것만 받아 먹을것인가, 아니면 만들어 먹을 것인가. 그래봐야 마소 손바닥에서 놀고 있겠지만...ㅠㅠ 부지런히 해서 오빠두님의 발 끝이라도 좀 따라가야 하는데...ㅠㅠ.

제 이해도가 좀 깊어지면 파워쿼리 자동화를 포스팅 하도록 하겠습니다.

열심히 공부하시고 노력하시는 분들의 건승을 기원합니다.

회원등급 : 열매4단계
포인트 : 1918 EP
전체 11

  • 2021-06-28 21:38

    파워앱은 JS로 제공될테니.. vba 보다는 sql 접근이 쉬워지지 않을까 생각됩니다 ㅎㅎ 지금 sql 쓸수있는 라이브러리가 있으려나 모르곘네요. VBA로 SQL사용을 못하는게.. 사실 접속하는건 쉬웠지만 보안이 가장 큰 문제였죵..

    구글처럼 보안된  백엔드에서 돌릴 수 있는 플랫폼이 구현된다면 sql 처리도 되지 않을까요? 애져클라우드는 구글은 비교하지 못할 정도로 거대하니.. 분명히 마소에서도 azure 를 파워앱에 잘 붙이지 않을까 생각합니다 ㅎㅎ


    • 2021-06-28 22:28

      파워앱은 터무니 없는 가격 요구로 개발 포기상태입니다. 지금 안드로이드로 앱을 개발하고 쉐어포인트를 DB로 활용해 볼 생각입니다. 데이터가 엑셀로 저장되도록 하는 것이 궁극의 목적이라. 그래야 파워 오토메이트를 활용한 다른 것을 할 수 있을 듯 해서요. 지금 의뢰 받은 건이 생각보다 많이 복잡하고 규모도 큽니다. 거의 맨땅에서 해딩하는 기분입니다. 안드로이드 손 놓은지 5년이 지났는데, 다시 볼라 하니 깝깝합니다. 이도 저도 안되면 옛날 방식으로 웹 호스팅해서 해야 할 듯...
      M Script 언어를 보시면 데이터 핸들링은 그냥 SQL를 씁니다. QueryTable 개체를 다루어서 셀에 값을 뿌려야 하니 VBA가 필요하고 ... 그리고 자체 엔진(xVelosity라 하더군요)을 이용한 접근 언어가 필요하니 그것을 표현하기 위해 M언어를 사용하고 ... 혼돈에 혼돈의 연속인 상황으로 보입니다.

      1. 데이처 처리는 SQL
      2. 엑셀에 뿌려주는 것은 VBA
      3. 내부적으로 처리하는 명령어는 M

      이렇게 3가지로 보입니다. 제 눈에는... 잘 아시는 분이 중생들을 위해 간단한 포스팅이라도 시야를 넗혀 주시면 좋겠습니다. 검색 능력이 떨어지는 것인지 ... 마소의 M Script PDF 파일을 다운 받았는데 처다도 보기 싫네요. 야들은 사전형으로 되어 있어, 내용을 제대로 파악하는데 꽤 오랜 시간이 걸려서...


  • 2021-07-05 11:26

    좋으신 말씀 잘 읽었습니다, 건승하세요~


  • 2021-06-27 22:16

    환영합니다. 같이 열공 하시죠~~


  • 2021-06-28 13:50

    발전하시기를 바랍니다 자유로와지기를요...


  • 2021-07-06 12:47

    오빠두엑셀에 들어오면서 dra****님 글들도 꼭 챙겨보고 있습니다. 😃 좋은 글들 올려주셔서 감사합니다.


  • 2021-07-26 10:53

    뭔가 좀 정리된 느낌 입니다. 감사합니다.


  • 2021-07-27 07:08

    감사합니다~!


전체 27
번호 제목 작성자 작성일 추천 조회
25
[엑셀 VBA] 개체 Reference - WORKBOOKS, WORKBOOK Object 첨부파일 (3)
dra**** | 2021.07.25 | 추천 2 | 조회 55
dra**** 2021.07.25 2 55
24
[엑셀 VBA] 개체 Reference - WORKSHEETS, WORKSHEET Object 첨부파일 (4)
dra**** | 2021.07.11 | 추천 0 | 조회 103
dra**** 2021.07.11 0 103
23
[엑셀 VBA] 개체 Reference - RANGE Object 첨부파일 (2)
dra**** | 2021.07.06 | 추천 2 | 조회 99
dra**** 2021.07.06 2 99
22
[엑셀 VBA] 자동화 - 엑셀 데이터베이스의 기본 작동 원리 및 구현 방법 (8)
dra**** | 2021.06.28 | 추천 3 | 조회 193
dra**** 2021.06.28 3 193
21
지배하는 자 Vs. 지배당하는 자 (11)
dra**** | 2021.06.27 | 추천 10 | 조회 196
dra**** 2021.06.27 10 196
20
[엑셀 VBA] 모든(?) 색상 값과 VBA로 적용하는 방법 첨부파일 (3)
dra**** | 2021.06.23 | 추천 3 | 조회 118
dra**** 2021.06.23 3 118
19
[엑셀 VBA] Naming Convention - 변수나 개체 이름 붙이는 관행 (4)
dra**** | 2021.06.14 | 추천 3 | 조회 95
dra**** 2021.06.14 3 95
18
[엑셀 VBA] 자동화 - FORMS를 이용한 직원 근무시간과 급여 계산하기
dra**** | 2021.06.13 | 추천 3 | 조회 175
dra**** 2021.06.13 3 175
17
[엑셀 VBA] 자동화 - 데이터 관리의 기본과 고급필터의 유용성
dra**** | 2021.06.10 | 추천 3 | 조회 128
dra**** 2021.06.10 3 128
16
[APP] 심플한 날짜 계산기 첨부파일 (4)
dra**** | 2021.06.09 | 추천 1 | 조회 134
dra**** 2021.06.09 1 134
15
[액셀 VBA] 자동화 - 직책별로 뽑은 직원들을 폼에 연동하여 수정 조회 하기
dra**** | 2021.06.03 | 추천 1 | 조회 145
dra**** 2021.06.03 1 145
14
[엑셀 VBA] 자동화 - ONEDRIVE를 서버로 활용하기 - 화상영어 회사 자동화 사례 (3)
dra**** | 2021.05.30 | 추천 2 | 조회 156
dra**** 2021.05.30 2 156
13
[엑셀 함수] WEEKNUM()으로 구한 몇 주차로 다시 날짜 구하기
dra**** | 2021.05.29 | 추천 0 | 조회 96
dra**** 2021.05.29 0 96
12
[엑셀 VBA] 자동화 - 1. 데이터 입력, 2. 양식에 자동으로 대입 3. 이메일 자동 발송 (2)
dra**** | 2021.05.28 | 추천 1 | 조회 180
dra**** 2021.05.28 1 180
11
[엑셀 함수] 엑셀에 쓰이는 모든 함수들입니다. 첨부파일 (10)
dra**** | 2021.05.26 | 추천 22 | 조회 255
dra**** 2021.05.26 22 255
10
[엑셀 VBA] 자동화의 딜레마 (11)
dra**** | 2021.05.25 | 추천 9 | 조회 221
dra**** 2021.05.25 9 221
9
[엑셀 VBA] 데이터베이스 다루기 (3)
dra**** | 2021.05.24 | 추천 3 | 조회 212
dra**** 2021.05.24 3 212
8
[엑셀 VBA]-[팁] 콤보박스에 시트에 있는 값을 자동으로 집어 넣기 (1)
dra**** | 2021.05.22 | 추천 0 | 조회 122
dra**** 2021.05.22 0 122
7
[엑셀 VBA]-[팁] TextBox, ComboBox 등에 숫자만 입력 받기 (1)
dra**** | 2021.05.21 | 추천 1 | 조회 165
dra**** 2021.05.21 1 165
6
디지털 시계 첨부파일 (10)
눈사람 | 2021.05.17 | 추천 10 | 조회 237
눈사람 2021.05.17 10 237