728x90
반응형

회사에서 데이터 입력창에 값을 입력하면, 셀에 자동으로 입력되는 기능을 구현 달라는 요청을 받았다. 

요청 사항을 이행하기 위해서, VBA(Visual Basic  Application)을 사용기로 했다. 

대략적인 시나리오는 다음과 같이 구성했다. 

버튼 클릭 -> 입력창 생성 -> 값 입력 -> 입력하기 버튼 클릭 -> 셀에 자동으로 값이 입력 됨 -> 입력창 리셋 -> 추가 입력 또는 닫기 버튼으로 입력을 종료함

 

문제는 입력창에 숫자를 입력했을 때, 자릿수마다 ,(콤마)가 생성되지 않아서

사용자의 어려움이 예상됐다. 

그래서 입력청에 숫자만 입력할 수 있고, 숫자 입력 시, 자릿수마다 ,(콤마)가 생성되는 코드를 찾아서 적용했다, 

 

Option Explicit
Dim blnEvent As Boolean
Private Sub TextBox13_Change()
Dim strText As String, strImsi As String
Dim lngStart As Long, lngImsi As Long, lngPeriod As Long
       If Not blnEvent Then
        '이벤트시 중복실행을 방지
           blnEvent = True
           With TextBox13
                lngStart = .SelStart '커서위치 파악
                strText = .Text
                strImsi = Application.Substitute$(strText, ".", ".0")
                strImsi = Format$(strImsi, "#,##0")
                '반올림되지 않도록 lngImsi = Len(strText)
                lngPeriod = InStr(strText, ".")
                If lngPeriod Then
                  If IsNumeric(strImsi) Then
                     .Text = strImsi & Mid$(strText, lngPeriod)
                  End If
                 Else
                    .Text = strImsi
                 End If
                   .SelStart = lngStart + IIf(Len(.Text) > lngImsi, 1, 0)
           End With
       End If
       blnEvent = False

End Sub

 

TextBox에 위 코드를 입력하면, 숫자를 입력하면 자동으로 ,(콤마)가 생성 된다. 

굉장히 잘 짜여져있다. 

출저가...기억이 안 난다.

죄송합니다. 

 

그래도 코드는 굉장히 잘 동작했다.

 

728x90
반응형

'엉망진창 AI > Study' 카테고리의 다른 글

추천엔진 라이브러리  (0) 2022.12.27
728x90
반응형

 

 추천엔진을 활용하여, 고객에게 맞는 제품을 추천할 있는 알고리즘을 구성하고자 한다.

 추천엔진은 생각보다 복잡하다.

 기존에 있는 데이터를 생성하는 임의의 값으로 데이터를 '행렬분해'하고 행렬분해 결과를 가지고 다시 데이터를 생성한다.

 물론 새로 생성되는 데이터는 기존의 있는 데이터와 유사한 값을 가질 있도록 한다.

 해당 알고리즘의 설명과 라이브러리는 (제목: 파이썬 머신러닝 완벽 가이드 | 출판사: 위키북스 | 저자: 권철민) '잠재 요인 협업 필터링' 참고하면 아주 친절하고 자세하게 설명되어 있다.

 

 일단 '잠재 요인 협업 필터링' 코드를 그대로 입력했다.

  • 됐다.

하지만 코드가 되는 것으로 부족했다.

 책에 있는 데이터는 모두 손으로 직접 입력하는 방식으로 되어 있어서 실제로 사용하게 된다면, 데이터를 일일이 입력해야 하는 번거로움이 있었다.

 

 나는 개발자스럽게 데이터를 하나하나 정성스럽게 입력해야하는 번거로움을 탈피하고자, 데이터를 파일로 입력해서 자동으로 출력을 있도록 코딩 하기로 했다.

 뿐만 아니라 실제 제품추천을 하기 위해서는 '잠재 요인 협업 필터링'으로 생성 행렬예측 데이터와 새로 입력 환자와 벡터 유사도를 확인해야 했다.

 

  • 모든 과정을 '자동화' 시키고 싶었다.

 

 완성 전체의 코드 중에서 실제로 내가 구성한 코드를 보니까, 초라하기가 그지 없다.

 

1 목표: 데이터 입력 자동화

 실제 코드는 데이터를 손으로 입력하도록 되어 있었다.

데이터 입력 방법

  사진과 같이 데이터를 입력하려고, 무던히도 많은 애를 썼다.

 row 100개를 넘어간다면, 타이핑으로 입력을 엄두 수가 없는 양이었다.

 아직은 데이터를 호출할 곳이 명확하게 정해진 것이 없어서, 일단 구글 드라이브에 파일을 업로드해서 사용할 있도록 코드 했다.

수정 된 데이터 입력 방법

 

2 목표: 생성 예측행렬 데이터와 새로운 데이터를 row 별로 비교하여 벡터 유사도 확인하기

  작업이 제일 지금의 나에게는 매우 어려운 작업이었다. 생성 예측행렬 데이터와 새로운 데이터의 벡터 유사도를 자동으로 출력하게 하는 것이다.

 일단 예측행렬의 데이터에 있는 row 데이터를 하나씩 호출해서 새로운 데이터와 벡터 유사도 값을 측정하게 하고, 그중 가장 값을 별도로 선정해야 한다.

 실제로 해당 작업은 예측행렬의 행의 데이터 값을 하나하나 입력해서 새로운 데이터와 벡터 유사도를 출력해야 했다.

수정 전 출력방법

 

 다시 봐도 굉장히 용감하다.

행 데이터를 하나하나 직접 입력해야하는 작업, 이게 너무 힘들었다. 나중에는 힘들듯 했다.

 결국에는 혼자서 쿵짝쿵짝하여 자동으로 벡터 유사도 값을 측정하도록 수정했다.

수정 된 벡터 유사도 출력

 for 사용했다.

 지금 보니까 4줄인데, 4줄을 작성하기 위해서 엄청 지저분했다. 

 먼 훗날에 내가 보면 이불킥 할 수줍은 작품이겠으나, 지금의 내가 보기에는 수줍은 첫 코딩이다.

 

728x90
반응형

+ Recent posts