728x90

 

Sub a셀줄나눔셀분리a()
    Dim rng As Range
    Dim cell As Range
    Dim lines() As String
    Dim i As Long
    
    ' 분할할 셀 범위를 지정합니다.
    ' 예를 들어, A1:A10 범위를 분할하려면 다음과 같이 설정합니다.
    Set rng = Selection
    copy_row = 0
    
    For Each cell In rng
        ' 셀의 내용을 줄바꿈을 기준으로 분할합니다.
        lines = Split(cell.Value, Chr(10))
        ' 분할된 각 라인을 인접한 셀에 넣습니다.
        For i = 0 To UBound(lines)
            cell.Offset(copy_row + i, 1).Value = lines(i)
        Next i
        copy_row = copy_row + i - 1
    Next cell
End Sub

728x90
728x90

구글 스프레드 시트 작성 

token, chat id는 열심히 구글링해서 하는법 찾아오면 되고

대충 조건은 필요한 조건은 이정도

1. 구글스프레드시트 -> 확장프로그램 -> AppScript

2. 코드 작성. 

function GunAutoRun()
{
  DDHDLib.increment_number("주가현황", "T4");
 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("주가현황");

  var range = sheet.getRange("T2:T3");
  var values = range.getValues();
  var token = values[0][0], chatid = values[1][0];

  range = sheet.getRange("O3:Q");
  values = range.getValues();
  for(var i=0; i<values.length; i++) {
    v = values[i];
    if(v[0] == true && v[1] != "유지") {
      var msg = v[2] + "\n";
      DDHDLib.send_telegram(chatid, token, msg);
    }
  }
}

3. 라이브러리 추가

1HjyrL0YUFVWIbUuv4T96XAxgr0Iv8jr5Je-Q0LpypxZsT_udtykvVNae

 

라이브러리 추가됨 확인

4. 트리거 추가

5.테스트 해보기

텔레그램에 잘 메시지 들어오면 완료!!

728x90
728x90

셀의 셀서식을 내맘대로 변경하기

해야할일
1. 엑셀서식을 숫자로
2. 음수는 - 빨간색으로
3. -(하이픈) 인경우는 0으로
4.#NA 에러표시는 0으로
5. 4열부터 +50열까지만 변경(전체행하기엔 속도가 느려짐)
6.랜덤하게 셀을 선택해도 변경가능

완성
Sub a숫자형식변경a()
    Dim selectedRows As Range
    Dim row As Range
    Dim selectedRowNumbers As String
    
    ' Check if any rows are selected
    On Error Resume Next
    Set selectedRows = Selection.Rows
    On Error GoTo 0
    
    If selectedRows Is Nothing Then
        MsgBox "No rows selected."
        Exit Sub
    End If
        
    ' Loop through each selected row and build the string of row numbers
    For Each row In selectedRows
        iRow = row.row
        icol = 4
        Set rng = Range(Cells(iRow, icol), Cells(iRow, icol + 50))
        For Each cell In rng
            If IsError(cell.Value) Then  '#NA를 0으로
                If cell.Value = CVErr(xlErrNA) Then
                    cell.Value = 0
                End If
            ElseIf cell.Value = "-" Then '-하이픈을 0으로
                cell.Value = 0
            End If
        Next cell
        
        With rng
            .NumberFormat = "#,##0_);[Red](#,##0)" '형식지정
            .HorizontalAlignment = xlCenter
            .Value = .Value ' This line re-evaluates the cell values to apply the formatting
        End With

    Next row
End Sub

결과확인하기

변경전

(매크로실행시 랜덤하게 행 선택)

변경후

#NA 오타(테스트로 임의작성)..#N/A(실제 오류)면 정상동작 확인

 

728x90
728x90

일단 대충 매크로 기록으로 '개인용 매크로 통합문서' 하나 만듬

1.엑셀 리본 커스터마이즈

2.매크로

C:\Users\nigaw\AppData\Roaming\Microsoft\Excel\XLSTART
그럼 해당위치에 PERSONLA.XLSB 가 만들어짐

해당 파일에서 매크로 만들면 됨

*PERSONLA.XLSB 위치확인
① 보기 - ② 직접 실행 창 (단축키 Ctrl + G) 를 클릭합니다.
기본적으로 ③ 직접 실행 창 이 표시되어 있는 경우도 있으니 그럴 경우엔 바로 아래 이미지로 내려가시면 됩니다.
Print Application.StartupPath

 3. 엑셀 매크로 안먹힐때
다시 깔고
레지스트리 편집기에서 excel삭제하면 엑셀설정 초기화.
연결편집에 알수없은 상관없음. 낚이지말자

 

728x90
728x90

추가기능으로 특정문자가 포함된 행 을 삭제하기

#2.g16_rngData_170 데이터 행 삭제
content = self.text.get(1.0, END)
lines = content.split("\n")
new_content = ""
for line in lines:
    if find_str[i] not in line:
        new_content += line + "\n"
self.text.delete(1.0, END)
self.text.insert(END, new_content)

추가기능으로 특정문자가 포함된 행 을 추가하기

elif find_str[i] == '0': #행추가
    content = self.text.get(1.0, END)
    lines = content.split("\n")
    target_character_rngData = "Set "+replace_str[0]+"_chtChart"
    insert_character_rngData = '    Set {}_rngData_{} = Range(Cells({}, 3), Cells({}, 4 + (find_blank_cell - 1)))'.format(replace_str[0],replace_str[i],replace_str[i],replace_str[i])
    new_content = ""
    for line in lines:
        if target_character_rngData in line:
            new_content += insert_character_rngData + "\n"
        new_content += line + "\n"
    self.text.delete(1.0, END)
    self.text.insert(END, new_content)

참고로 개인적으로 관리하는 파일 관련해서 추가 삭제하는것이라 범용적으론 적용안될수가 있음

728x90

+ Recent posts