::: 까만콩 빈이네 :::
까만콩 빈이네의 살아가는 이야기를 기록합니다
RSS
  • Home
20160602092822

6월 2 2016

엑셀(EXCEL) – 불 특정한 스페이스로 분리된 셀을 스페이스 앞 뒤로 문자열 분리

 

업무를 진행하다 보면 참 애매한 경우가 많습니다. 갑님이 보내오신 메일의
양식을 바꾸어 달라고 할 수가 없어 을님들이 하지 않아도 될 일들을 해야할
경우인데요. 아래의 질문처럼 그냥 주문서를 엑셀로 받아서 처리하면 될 것
같은데 그냥 메일 내용속에 Text를 그냥 붙여서 오는 경우입니다.

http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3740799
——————————————————————————————
아웃룩메일로 들어온 데이터를 엑셀로 옮기고 싶은데요.

품번 수량
X4567890 20개
X4567891 20개
X4567892 20개
X4567893 30개
X4567894 20개

이런식으로 데이터가 들어오는데요.
——————————————————————————————

참 이런 것을 몇 백개씩 하루에 지속적으로 하고 계시는 것 같습니다.
시작합니다.

개발도구 > VBA Editor 열고 Module하나 삽입하시고 아래 코드를
붙여 넣습니다. 그리고 ActiveX 명령 버튼 하나 삽입하시고 매크로를
연결 시킵니다. 물론 제 블로그에 원본 자료 올려 놓으니 오셔서
내려 받고 그냥 사용하시면 됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Option Explicit
 
Sub Split_Text_To_Cell()
' 분리할 앞뒤 문자열과 영역 정의
Dim fStr As String, rStr As String
Dim rng As Range, rngRef As Range
' 분리할 영역 정의, 자동과 수동
Set rngRef = Range("A1", Range("A65536").End(xlUp))
' 직접 영역을 선택할 경우
'Set rngRef = Application.InputBox("분리 영역 선택", Type:=8)
' 선택된 영역을 순환하면서 분리함
For Each rng In rngRef
' 일반적으로 분리하는 방법
'fStr = Left(rng.Value2, InStr(rng.Value2, " ") - 1)
'bStr = Right(rng.Value2, Len(rng.Value2) - InStrRev(rng.Value2, " "))
' 조금 있어 보이게 분리하는 방법 ^^;;;
fStr = Mid(rng.Value2, 1, InStr(rng.Value2, " ") - 1)
rStr = Mid(rng.Value2, InStrRev(rng.Value2, " ") + 1)
' 분리된 문자열을 셀에 입력함
rng.Offset(0, 1).Value2 = fStr
rng.Offset(0, 2).Value2 = rStr
Next rng
 
End Sub
 
ps> 더 편한 방법?
 
 
Sub Split_Text_by_도장님()
' 아래 방법 중 아무거나로 선택해서 진행
' 선택하는 방법도 여러가지가 있으니...
' 아래로 열들이 연속된 경우 사용
'Range("A1", Range("A1").End(xldown)).Select
' 연속되지 않고 중간 열들이 비어 있는 경우
'Range("A1", Range("A65536").End(xlUp)).Select
 
Columns("A:A").Select
Selection.TextToColumns
 
End Sub

첨부 화일 : 불 특정한 스페이스로 분리된 셀을 스페이스 앞 뒤로 문자열 분리-20160602

By vinipapa • 무른모 • 0 • Tags: 문자열 분리, 스페이스, 엑셀

20160525185554

5월 25 2016

엑셀(EXCEL) – 수십만행의 자료를 특정행만큼 분리해서 엑셀 워크북 만들기

 

제목처럼 수십만, 수백만행의 자료를 다룰려면 속도와 메모리때문에 힘든데 이것을 특정행만큼

잘라서 워크북을 만들어 주는 기능입니다.

Sub Split_File_By_Row()

Dim wrk As Workbook
Dim sht As Worksheet

Dim cols As Integer, dcnt As Integer, WorkbookCounter As Integer

Dim Rng2Cp As Range

Dim p As Long

Dim TempStr As String, strFullPath As String

strFullPath = FileNameNoExtensionFromPath(ThisWorkbook.FullName)

TempStr = Right(strFullPath, Len(strFullPath) – (InStrRev(strFullPath, “\”)))

dcnt = InputBox(“분할할 행 갯수를 입력하세요”)

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Set sht = ThisWorkbook.ActiveSheet

cols = sht.UsedRange.Columns.Count
WorkbookCounter = 1

Rows(1).Delete xlUp

For p = 1 To sht.UsedRange.Rows.Count Step dcnt

Set wrk = Workbooks.Add

Set Rng2Cp = sht.Range(sht.Cells(p, 1), sht.Cells(p + dcnt – 1, cols))
Rng2Cp.Copy wrk.Sheets(1).Range(“A1”)

wrk.SaveAs ThisWorkbook.Path & TempStr & “_” & WorkbookCounter
wrk.Close

WorkbookCounter = WorkbookCounter + 1

Set Rng2Cp = Nothing

Next p

Application.DisplayAlerts = True
Application.ScreenUpdating = True

Set wrk = Nothing

End Sub

Function FileNameNoExtensionFromPath(strFullPath As String) As String

Dim intStartLoc As Integer
Dim intEndLoc As Integer
Dim intLength As Integer

intStartLoc = Len(strFullPath) – (Len(strFullPath) – InStrRev(strFullPath, “\”) – 1)
intEndLoc = Len(strFullPath) – (Len(strFullPath) – InStrRev(strFullPath, “.”))
intLength = intEndLoc – intStartLoc

FileNameNoExtensionFromPath = Mid(strFullPath, intStartLoc, intLength)

End Function

 

첨부 화일 :

By vinipapa • 무른모 • 0

20160525183029

5월 25 2016

엑셀(EXCEL) – 시트 이름으로 검색해서 원하는 시트 선택

 

오랜만에 쓸만한? 질문이 올라왔습니다. 여러 거래처를 관리하고 있는 엑셀 시트에서
바로 해당 거래선의 일부 이름으로 검색해서 바로 시트를 선택하고 싶다는 질문이네요.
http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3735375

함수로서 기능을 잘 사용하시는 분은 함수로 사용하시고 저는 VBA가 편하기 때문에
이것을 도구로 사용해서 사용자 폼을 뛰어서 편리하게 시트를 검색, 선택하게 했습니다.

너무 간단해서 설명을 할 내용도 별로 없어 보입니다.

Option Explicit

우선 사용자 폼을 선택하면 LIST시트를 제외한 모든 시트를 목록에 뿌리는 루틴입니다.
사실 없어도 되는 기능입니다. 어짜피 검색 필드를 통해 검색 목록을 뿌리면 지워지는
항목이므로 … 그래도 이렇게 전체 시트를 보여줄 수 있다는 기능입니다.

Sub View_All_Sht_Name()

Dim sht As Worksheet

Dim sht_name As String

For Each sht In Worksheets
If sht.Name <> “LIST” Then
UserForm1.ListBox1.AddItem sht.Name

End If

Next sht

End Sub

이제 검색할 내용을 입력하고 입력 완료를 위해 오른쪽 화살표나 엔터키를 눌러주세요.
입력은 한글을 기본으로 입력되도록 설정해 두었습니다.

Private Sub TextBox1_Change()

Dim sht As Worksheet
Dim sht_name As String

UserForm1.ListBox1.Clear

For Each sht In Worksheets
If InStr(1, sht.Name, TextBox1.Text, 1) > 0 Then
If sht.Name <> “LIST” Then
UserForm1.ListBox1.AddItem sht.Name

End If
End If
Next sht

End Sub

검색된 시트를 클릭하면 바로 활성화 됩니다.

Private Sub ListBox1_Click()

Dim sht As Worksheet
Dim sel_sht As String

sel_sht = UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex)

For Each sht In Worksheets
If sht.Name = sel_sht Then
sht.Activate

End If
Next sht

End Sub
개발도구> 디자인모드에서 ActiveX 버튼 하나 만드시고 아래 매크로 연결시켜 주세요.
사용자 폼이 항상 시트 위에 윈도우로 떠 있도록 하는 것인데 검색할 때마다 폼을
띄우시려면 modalless 제거해 주세요

Private Sub CommandButton1_Click()

UserForm1.Show modalless

End Sub

Private Sub UserForm_Initialize()

Call View_All_Sht_Name

End Sub

 

첨부 화일 : 20160525-Sheet 이름으로 검색 선택

By vinipapa • 무른모 • 0

«< 18 19 20 21 22 >»

카테고리

  • 매킨토시 (261)
    • 굳은모 (73)
    • 무른모 (194)
  • 빈이네 (303)
    • 가족들 (107)
    • 까만콩 (60)
    • 엄마아빠 (131)
  • 잡동사니 (175)
    • 수다떨기 (37)
    • 정 보 (127)
    • 책읽기 (11)

그 밖의 기능

  • 로그인
  • 글 RSS
  • 댓글 RSS
  • WordPress.org

태그

AirPlay AirPrint Apple BootCamp bundle Database Design Dock Dropbox Edit Event Excel free iPad iPhone iTunes Limitted Free Mac Macbook Mac Bundle MacJournal Mac OSX Macupdate MobileMe OCR Pebble safari Sale share Snow Leopard software Tip tweet Twitter Update Windows 구입 나들이 맥 무료 빈이 업데이트 엑셀 엑셀(EXCEL) 팁
  • 2024 윤석열 탄핵 집회 참석
  • 맥 마이그레이션 중…
  • 동백
  • 같은 나무에 다른 색 잎 들
  • 여름 햇살

↑

© ::: 까만콩 빈이네 ::: 2025
Powered by WordPress • Themify WordPress Themes