소스중에 있는 Set W_Rng = MyST.Range("A" & i & ":I" & i) 이부분을 Set W_Rng = MyST.Range("A" & i & ":Z" & i) 이렇게 바꿔주시면 Z열까지 복사 됩니다. 제가 VBA 공부하던 초창기에 올린 영상이어서.. 범위를 강제로 정해주게 만들어 뒀었네요.. ㅠ.ㅠ 아래 블로그 글의 소스를 보시면 데이터가 있는 범위를 가져오는 로직이 있으니 참고하시면 좋을듯 합니다. blog.naver.com/550sn/222615012972
저장하는 파일 이름에 날짜에 대한 정보만 추가할 수 있하면 될듯 합니다. OPWB.SaveAs (F_Name & "\" & L_Name) 이 구문을 아래와 같이 추가해서 바꾸면 될것 같습니다. OPWB.SaveAs (F_Name & "\" & L_Name & Format(Date, "_mm월dd일")) ※ 테스트는 못해봤습니다.
친절하고 자세한 설명 감사합니다. 코딩에 사용되는 폰트가 뭔가요? 폰트가 맘에 들어서.. 저도 저 폰트로 설정해서 쓰고 싶어서요.. 본 영상에 대한 질문은 아니지만 하나만 더 질문드리고 싶은데요 저렇게 vba 기능은 특정 파일에만 속해져 있어서 해당 파일(*.xlsm)이 열려 있는 상태여야만 실행이 가능할까요? 전역 Function 처럼 특정 기능들을 어떤엑셀파일을 작업하는 중이던 해당 기능을 단축키라던가 버튼이라던가 등등으로 호출해서 바로 실행할수 (해당코딩이 기술되있는 xlsm파일을 열지 않더라도) 있나요? 엑셀에선 불가능한건지 어떤건지 알수가 없어서요...
정말 정말 좋은 정보 감사드립니다. 덕분에 실무자 3명이 갈려나간 시간잡아먹는 업무를 자동화 할수 있었습니다. 다만 현재 저 분할 내용으로 저장했을때 저장된 엑셀 확장자가 일반 엑셀 워크시트로 저장되는데, 혹시 엑셀 97~2003 워크시트 버전으로 저장되게하는 방법은 없는걸까요 ? ㅠㅠ
가능은 할 것 같습니다. 중복 행을 삭제하는 방법이 추가되어야 하지 않을까 생각되네요. 데이터 정리하는 작업을 매크로로 만드는 방법을 다룬 적이 있는데, 아래 링크 참고해 보시겠어요? ruclips.net/video/y1UoRrSDJhc/видео.html blog.naver.com/550sn/222178880246
좋은 영상 감사합니다! 업무에 꼭 필요한 스킬인데요~! 중간 확인가정 13:36초에서 부터 똑같이 실행이 되지 않습니다. 다르게 한부분은 name_a -> name_c 로 바꾼것뿐입니다. 제가 어떤부분을 실수했을까요? 영상에서는 H열로 하셨는데 혹시 A 열의 행으로 시트를 나누고 파일을 저장하는 소스를 받아볼수있을까요? (블로그의 소스에는 한글이 함께 들어가있어서 그 부분을 응용 해야하는 부분이라 어렵게 느껴졌습니다. 친절히 알려주셨는데 못따라가서 죄송합니다.) Sub sep_date() Dim F_dir As FileDialog Dim f_name, A_Name As String Dim MyWB, OPWB As Workbook Dim MYST, OPST As Worksheet Dim MYROW, OPROW, I As Integer Dim MYRNG As Range Set F_dir = Application.FileDialog(msoFileDialogFolderPicker) F_dir.AllowMultiSelect = False F_dir.Show f_name = F_dir.SelectedItems(1) Set MyWB = ActiveWorkbook Set MYST = MyWB.Sheets(1) MYST.Select MYST.Range("A60000").End(xlUp).Select MYROW = Selection.Row For I = 2 To MYROW Set MYRNG = MYST.Range("A" & I & ":I" & I) A_Name = MYST.Range("H" & I) If shCheck(A_Name) Then Set OPST = MyWB.Sheets(A_Name) Else Set OPSH = MyWB.Sheets.Add(AFTER:=MYST) OPST.Name = A_Name ->여기가 잘못됐다고 디버그에서 알려줍니다. End If OPST.Select OPST.Range("A60000").End(xlUp).Select OPROW = Selection.Row + 1 MYRNG.Copy OPST.Range("A" & OPROW).Select OPST.Paste Next I End Sub Function shCheck(Name As String) As Boolean On Error GoTo E1 If Sheets(Name).Name "" Then shCheck = True Exit Function E1: shCheck = False End Function
@@gv60ll 이 부분을 삭제하거나 주석문 처리해 보세요. ActiveSheet.Range("A1:P" & OPRow).RemoveDuplicates Columns:=1, Header:=xlYes 해당구문이 중복된 항목을 삭제하는 구문인데, 삭제 기준이 1번째 열의 고유번호입니다. 그런데, 작업하신 파일이 보면 1번째 열이 고유번호가 아니라 업체 이름이다 보니 2번째행 이하의 값을 중복값으로 인식하고 모두 삭제해서 발생한 현상입니다. 그리고, 중간중간에, 제 원래 소스에서는 I열까지로 되어 있는 부분을 P열까지로 바꾸셔야 원하시는 동작이 될것 같은데, 덜 바뀐 부분도 있는것 같습니다.
우선 10개 내외의 소수의 행으로 돌려보시고 결과를 확인해 보시겠어요? 10개 내외의 소수 행에서도 멈추면 소스에서 문제점을 찾아야 할 것 같고. 10개 내외에서는 괜찮은데, 25000개 행에서 문제가 생기셨다면 컴퓨터에게도 일을 처리하는데 시간이 필요한것 같으니 기다려 줘야 할 것 같습니다.
@@TricksOffice 60개의 동일한 제품에 대한 각각의 성적서를 뽑아야 하는데 해당제품에 대한 성적서양식이 4개 탭짜리로 구성되어있습니다.(성적서가 4장짜리인데 이걸 한개시트로 작업한게 아니라 페이지당 한개시트를 점유하게 짜놨습니다.) 원래대로라면 60개를 60번 노가다해서 뽑아야 하는데 왠지 이방법을 응용하면 한번에 엑셀로 뽑아낸다음 60분할저장하면 될거같아서요.
감사합니다. 업무에 큰 도움이 되었습니다!! 최고예요~!!^^
대단하십니다. 찾고 있었던 내용입니다..
큰 도움이 되었습니다. 정말 차근차근 잘 설명해 주셔서 고맙습니다! 자주 찾아 뵙겠습니다.^^
도움이 되셨다니 다행입니다. 자주 들러주세요. ^^
찾고 있던 자료인데 자세한 설명 감사합니다 대단합니다~^^ 👍
유튜버가 되셨군요~^^ 멋지십니다. 오래간만에 목소리 들으니 좋네요.
방문해주셔서 감사합니다.
그런데... 누구신지? ^^;
정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 너무감사합니다
도움이 되셨나보네요. 다행입니다. ^^
감사합니다
사랑해요
정말 너무 멋진 자료입니다
설명도 굉장히 친절하시고요!!
혹시 외람되지만 다른 자료에 적용했을 때
i열까지밖에 자료가 안나오는데
더 열이 더 긴 자료들 (z 또는 그 이상 일 때)는 어떤 부분을 수정하면 되는 것까요ㅠㅠ
소스중에 있는
Set W_Rng = MyST.Range("A" & i & ":I" & i)
이부분을
Set W_Rng = MyST.Range("A" & i & ":Z" & i)
이렇게 바꿔주시면 Z열까지 복사 됩니다.
제가 VBA 공부하던 초창기에 올린 영상이어서.. 범위를 강제로 정해주게 만들어 뒀었네요.. ㅠ.ㅠ
아래 블로그 글의 소스를 보시면 데이터가 있는 범위를 가져오는 로직이 있으니 참고하시면 좋을듯 합니다.
blog.naver.com/550sn/222615012972
감사합니다 안그래도 회사 시스템이 변경되어 매일 이 귀찮은걸 어떻게 하나 했는데 정말 많은 도움이 되네요! 약간만 손보니 딱 좋습니다! 한가지 궁금한게 있기는 한데 혹시 저장되는 파일명을 예시상의 '아이언맨' 뒤에 오늘 날짜를 붙여 '아이언맨_4월18일'
저장하는 파일 이름에 날짜에 대한 정보만 추가할 수 있하면 될듯 합니다.
OPWB.SaveAs (F_Name & "\" & L_Name)
이 구문을 아래와 같이 추가해서 바꾸면 될것 같습니다.
OPWB.SaveAs (F_Name & "\" & L_Name & Format(Date, "_mm월dd일"))
※ 테스트는 못해봤습니다.
@@TricksOffice 감사합니다 제대로 들어가네요!
친절하고 자세한 설명 감사합니다.
코딩에 사용되는 폰트가 뭔가요? 폰트가 맘에 들어서.. 저도 저 폰트로 설정해서 쓰고 싶어서요..
본 영상에 대한 질문은 아니지만 하나만 더 질문드리고 싶은데요
저렇게 vba 기능은 특정 파일에만 속해져 있어서 해당 파일(*.xlsm)이 열려 있는 상태여야만 실행이 가능할까요?
전역 Function 처럼 특정 기능들을 어떤엑셀파일을 작업하는 중이던
해당 기능을 단축키라던가 버튼이라던가 등등으로 호출해서 바로 실행할수 (해당코딩이 기술되있는 xlsm파일을 열지 않더라도) 있나요?
엑셀에선 불가능한건지 어떤건지 알수가 없어서요...
a시네마M이요. 시네마체로 예전에 자막에 자주 사용하는 폰트였습니다.
사실 코딩하기에는 좀 안좋은 글씨체이긴 합니다.
I, l, 1 이 잘 구분이 안되서요.
정말 정말 좋은 정보 감사드립니다. 덕분에 실무자 3명이 갈려나간 시간잡아먹는 업무를 자동화 할수 있었습니다. 다만 현재 저 분할 내용으로 저장했을때 저장된 엑셀 확장자가 일반 엑셀 워크시트로 저장되는데, 혹시 엑셀 97~2003 워크시트 버전으로 저장되게하는 방법은 없는걸까요 ? ㅠㅠ
옵션에서 조정하는 방법이 있을것 같은데요. 주말에 한번 살펴보겠습니다.
대박 제가 찾던게 이거예요!! 그런데 선생님 여기서 한단계? 몇단계 나아가야 하는지 모르겠지만 sheet 1, 2, 3가 각각의 자료가 있고 하나의 항목(예를들어 이름)만 일치한다면 원하는 이름만 두고 파일로 저장하는 방법이 있긴할까요?..ㅠㅠㅠ
가능은 할 것 같습니다. 중복 행을 삭제하는 방법이 추가되어야 하지 않을까 생각되네요.
데이터 정리하는 작업을 매크로로 만드는 방법을 다룬 적이 있는데, 아래 링크 참고해 보시겠어요?
ruclips.net/video/y1UoRrSDJhc/видео.html
blog.naver.com/550sn/222178880246
@@TricksOffice 감사합니다 알려주신 내용 참고해서 다시 확인해보겠습니다!! 오늘 또 보면서 정리하고 있는데 그래도 어렵긴하네요 진짜 강사님 대단하세요! ㅠㅠ
@@jhy6082 매크로나 RPA가 처음 접할때 진입 장벽이 조금 있긴 한데, 익숙해 지시면 필요한 내용만 금방 금방 찾아서 처리하실 수 있으실 겁니다.
오늘도 내 컴터에게 일 시키기에 열심인 사람 모두모두 화륑 입니다. ^^
혹시 시트 여러개인 것을 같은 구분 키워드(영상상에서 고객명에 해당하는)로 나눠서 하나의 파일(시트구분 유지한채)로 출력하는게 가능할까요???
가능은 할 것 같은데...
고민은 꽤 필요할것 같네요.
어떤식으로 작업할 것인지에 대해서부터 명확히 정의 되어야 할 것 같습니다.
잔마왕님 보고 따라해봤는데 계속 같은 부분에서 오류가 뜹니다..메일로 문의드렸는데 확인 해주실 수 있을까요?ㅠㅠ
좋은 영상 감사합니다! 업무에 꼭 필요한 스킬인데요~!
중간 확인가정 13:36초에서 부터 똑같이 실행이 되지 않습니다. 다르게 한부분은 name_a -> name_c 로 바꾼것뿐입니다. 제가 어떤부분을 실수했을까요?
영상에서는 H열로 하셨는데 혹시 A 열의 행으로 시트를 나누고 파일을 저장하는 소스를 받아볼수있을까요? (블로그의 소스에는 한글이 함께 들어가있어서 그 부분을 응용 해야하는 부분이라 어렵게 느껴졌습니다. 친절히 알려주셨는데 못따라가서 죄송합니다.)
Sub sep_date()
Dim F_dir As FileDialog
Dim f_name, A_Name As String
Dim MyWB, OPWB As Workbook
Dim MYST, OPST As Worksheet
Dim MYROW, OPROW, I As Integer
Dim MYRNG As Range
Set F_dir = Application.FileDialog(msoFileDialogFolderPicker)
F_dir.AllowMultiSelect = False
F_dir.Show
f_name = F_dir.SelectedItems(1)
Set MyWB = ActiveWorkbook
Set MYST = MyWB.Sheets(1)
MYST.Select
MYST.Range("A60000").End(xlUp).Select
MYROW = Selection.Row
For I = 2 To MYROW
Set MYRNG = MYST.Range("A" & I & ":I" & I)
A_Name = MYST.Range("H" & I)
If shCheck(A_Name) Then
Set OPST = MyWB.Sheets(A_Name)
Else
Set OPSH = MyWB.Sheets.Add(AFTER:=MYST)
OPST.Name = A_Name ->여기가 잘못됐다고 디버그에서 알려줍니다.
End If
OPST.Select
OPST.Range("A60000").End(xlUp).Select
OPROW = Selection.Row + 1
MYRNG.Copy
OPST.Range("A" & OPROW).Select
OPST.Paste
Next I
End Sub
Function shCheck(Name As String) As Boolean
On Error GoTo E1
If Sheets(Name).Name "" Then shCheck = True
Exit Function
E1:
shCheck = False
End Function
디버그 메세지가 어떻게 되는지 알 수 있을까요?
에러난 파일을 제게 메일로 주시면 시간날 때 확인해 보겠습니다.
다만, 제가 지금 개인 사정상 조금 정신이 없는 관계로 6월 이후로 답변이 가능하리라 예상됩니다.
그리고, 못 따라 오는 것은 절대 죄송한 일이 아닙니다.
홈페이지 엑셀 다운해서 재사용하려는데 열과 행추가해서 해당 셀만변경해서 사용하니 다른건 다되는데 생성된 엑셀의 내용이 한줄만 불러오는데 이유가 있을까요? 반복 구문이 문제인거 같은데...ㅜㅜ
바꾼 내용을 개인 메일로 주실 수 있으실까요?
550sn@naver.com
MyRow 값을 읽어오는 부분에서 정확한 동작이 안되어서 그럴 수 있을 것 같긴 한데...
내용을 봐야 알 것 같습니다.
열 행 추가안하고 다른 내용 붙여넣어도 결과는 같네용ㅎㅎ 한줄만 나오네요ㅎㅎ 부탁드립니다ㅎㅎ
보내드렸어용ㅎ 감사합니다~^^
@@gv60ll
이 부분을 삭제하거나 주석문 처리해 보세요.
ActiveSheet.Range("A1:P" & OPRow).RemoveDuplicates Columns:=1, Header:=xlYes
해당구문이 중복된 항목을 삭제하는 구문인데, 삭제 기준이 1번째 열의 고유번호입니다.
그런데, 작업하신 파일이 보면 1번째 열이 고유번호가 아니라 업체 이름이다 보니 2번째행 이하의 값을 중복값으로 인식하고 모두 삭제해서 발생한 현상입니다.
그리고, 중간중간에, 제 원래 소스에서는 I열까지로 되어 있는 부분을 P열까지로 바꾸셔야 원하시는 동작이 될것 같은데, 덜 바뀐 부분도 있는것 같습니다.
@@TricksOffice 감사합니다~~^^ 도전 해볼게요~너무 어렵네요 ㅠㅠ 처음인데 ㅎㅎ
25000개의 행을 분류 하였더니 프로그램이 멈추었습니다. 어떻게 해야 할까요?
우선 10개 내외의 소수의 행으로 돌려보시고 결과를 확인해 보시겠어요?
10개 내외의 소수 행에서도 멈추면 소스에서 문제점을 찾아야 할 것 같고. 10개 내외에서는 괜찮은데, 25000개 행에서 문제가 생기셨다면 컴퓨터에게도 일을 처리하는데 시간이 필요한것 같으니 기다려 줘야 할 것 같습니다.
@@TricksOffice 네 그렇게 해 보겠습니다. :)
@@TricksOffice 25000개 이상을 처리하는데 걸리는 시간을 줄이기 위해 for if copy를 분류 등으로 하는 것이 나을까요?
@@Classup-p2z 속도를 높이기 위해 여러가지 고민을 해 볼 수 있습니다. 보통 Selection 로직이 엑셀에서 속도가 가장 느린 로직이니, 이 부분을 최소화 하게 로직을 수정해 줘도 큰 도움이 될 수 있습니다.
감사합니다~~ 혹시 소스코드 파일 받아볼 수 있을까요?
블로그에서 다운로드 받으실수 있을거에요...
blog.naver.com/550sn/221866174233
혹시 시트뿐만 아니라 탭도 동시에 나눌수 있을까요?
탭1:a,b,c
탭2:a,b,c
이걸
a:탭1,2
b:탭1,2
c:탭1,2
이런식으로 나누고 싶습니다.
죄송한데, 질문 내용이 잘 이해가 안가서요... 메일로 자세한 내용을 주실 수 있으세요?
550sn@naver.com
@@TricksOffice
60개의 동일한 제품에 대한 각각의 성적서를 뽑아야 하는데 해당제품에 대한 성적서양식이 4개 탭짜리로 구성되어있습니다.(성적서가 4장짜리인데 이걸 한개시트로 작업한게 아니라 페이지당 한개시트를 점유하게 짜놨습니다.)
원래대로라면 60개를 60번 노가다해서 뽑아야 하는데 왠지 이방법을 응용하면 한번에 엑셀로 뽑아낸다음 60분할저장하면 될거같아서요.
@@prebis1312 샘플 파일을 메일로 보내주실 수 있으신가요?
관련 영상 업로드 했습니다.
ruclips.net/video/SLCl6CZT1dc/видео.html