nØthing specia¡

Sources

Posts

129 posts
New comment on 'Python as an Excel scripting language'

New comment on 'Python as an Excel scripting language'

nØthing specia¡|2018년 4월 7일

지난 번 포스팅에서 엑셀 스크립트언어로서 파이썬이 채택될거라는 소문을 전해드렸는데, 오늘 오전에 office.com에서 사용자들의 의견을 전해주는 메일을 보내주었더군요. 메일 내용에 따르면 코멘트를 올린 사용자는 대기업에서 일하는데, 예전엔 엑셀로 많은 일을 해왔는데, 지금은 파이썬으로 그 일들을 대체하고 있다고 하네요. 그러나 파이썬이 엑셀 스크립팅 언어가 된다면 그런 추세가 반전될거라는 조언입니다. 그런 상황이 온다면 재미있는 일이 많이 생길 듯합니다.

한 번만 실행하는 루틴

한 번만 실행하는 루틴

nØthing specia¡|2018년 4월 5일

하나의 매매 알고리즘을 만들면서 알고리즘을 하나의 프로시저에 몰아넣다 보니, 곤란한 점이 생긴다. 실시간 시세가 수신될때마다 이 알고리즘을 호출해야 하는 데, 구현된 알고리즘에는 처음 한 번만 실행하는 투자자원배분 루틴이 있다. 그렇다면 알고리즘을 두 개의 프로시저로 분리하는 게 맞다. 하지만 이러다 보니 두 개의 프로시저에서 참조하는 변수를 전역변수로 해야 한다. 전역변수는 되도록 줄이는 게 좋다. 전역변수의 갯수가 많으면 관리하기 어려워 질 수 있다. 이럴 경우 이전의 실행여부를 어디에 저장해두고(보통 워크시트 구석의 어느 셀), 그 정보를 읽어와서 실행여부를 결정할 수 있다. 그런 방법은 이미 흔한 것이라 생략하고 다음과 같이 2가지 방법을 생각해볼 수 있다. 1) Static 사용 보통

파이썬 따라하기 - 두 개의 배열을 합치기

파이썬 따라하기 - 두 개의 배열을 합치기

nØthing specia¡|2018년 3월 26일

두 개의 리스트를 원소별로 붙이는 파이썬 코드를 보니, VBA로 이건 안될 까 하는 생각이 들었다.x = ["a", "b", "c", "d", "e"] y = [1, 2, 3, 4, 5] z = map(lambda x,y:("%s%d" % (x,y)),x,y)그래서 두 가지를 해보았는데, (1)하나는 위의 파이썬 코드처럼 두 리스트의 원소끼리 맞붙여 보는 것이고, (2)나머지 하나는 그냥 기계적으로 직렬로 연결하는 것이다. (1)은 배열수식으로는 가능하지만 VBA구문상 어렵다. 그래서 엑셀의 힘을 빌려 보기로 했다. Dim arr1, arr2, arr3 arr1 = Array("a", "b", "c") arr2 = Array("d", "e", "f")

오랜만에 풀어 보는 SQL 문제

오랜만에 풀어 보는 SQL 문제

nØthing specia¡|2018년 3월 23일

얼마 전 친한 형님이 급히 풀어달라는 과제가 있었는데, 그중에 SQL을 만드는 것이 있었다. You have been asked to get some answers from a database on a set of data. The database contains an archive of bids made by users for players over the years. The database contains years of data and you will need to write raw SQL queries to answer the questions. Using the table structure below, provide the SQL queries required to answer as many

간단한 초보적 질문에 어렵게 답하기

간단한 초보적 질문에 어렵게 답하기

nØthing specia¡|2018년 3월 22일

다 아는 사실이지만 많이 아는 것과 잘 가르치는 것은 별개이다. 눈 높이에 마추어 가르치고 답을 주는 것이 좋은 것이 아닐까? 그러나 뭔가 고수같은 품격을 살리기 위해 일부러 어렵게 답하는 만행을 상대방 앞에선 하지 못하고 이렇게 블로그에 옮겨 본다. 하나의 시트속의 숫자들을 다른 시트로 복사하는 데, 그냥 복사가 아니라 1000으로 나눈 결과를 붙여 넣는 것이다. 손으로 한다면 누구라도 하는 간단한 것이지만, VBA 초보의입장에선 첫 걸음 떼는 아기처럼 어려운 일이다. FM(교본)같은 답변은 이럴 것이다.Dim rng As Range Worksheets("Sheet1").Range("A2:A7").Copy Worksheets("S