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

8월 26 2015

엑셀(EXCEL) – 수식으로 된 셀에서 숫자만 각 셀로 분리하여 처리하기

 

언젠가 다른 사업부의 생산 부서에서 일하는 사원이 생산 일보를 엑셀에서 작성하는데
제품 아이템마다 F2를 눌러 =25+27+24 … 이런 식으로 입력하는 것을 보고 아이디어를
생각하다가 그만 둔 프로그램이 있었는데 아래의 질문과 같이 비슷한 내용이 있어서
이번에는 시간적 여유가 있고 해서 간단한 팁을 만들어 보았습니다.

http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3501134
(엑셀에서 셀 입력내용을 가져올수있을까요?)

간단히 해석하면 셀에 지속적으로 +, – 등으로 추가된 데이터를 분리해 달라는 내용입니다.

저번에 해결하려는 내용을 거꾸로 해석해서 두가지 버전으로 작성해 보았습니다. 우선
해당 셀이 공식(즉 산술식으로 구성되어 있는지 확인)하는 루틴을 작성해서 그 셀 타입이
‘Formulra’일 때만 데이터를 분리 처리하도록 함수를 만들어 인자를 넘깁니다.

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Option Explicit
 
Function ShowFormulas(Check As Range)
 
Dim TempStr As String
' 셀에 공식?이 있을 때만 처리하도록 코멘트 처리
Select Case True
' Case Check.HasArray
' TempStr = "{" & Check.Array & "}"
Case Check.HasFormula
TempStr = Check.Formula
' Case Else
' TempStr = Check.Value
End Select
ShowFormulas = TempStr
 
End Function
 
' 특정 셀의 공식을 숫자로 분리하는 루틴
Sub Num_Ext_In_Cell(TargetStr As String)
 
Dim TempStr As String
Dim intNum As Integer
Dim NumCnt As Integer
NumCnt = 0
TempStr = ""
For intNum = 1 To Len(TargetStr)
If IsNumeric(Mid(TargetStr, intNum, 1)) Or Mid(TargetStr, intNum, 1) = "." Then
TempStr = TempStr + Mid(TargetStr, intNum, 1)
ActiveCell.Offset(0, NumCnt).Value = TempStr
Else
NumCnt = NumCnt + 1
TempStr = ""
End If
Next intNum
End Sub
 
' 특정 영역을 선택해서 공식을 숫자로 분리하는 루틴
Sub Num_Ext_In_Range()
 
Dim TempStr As String
Dim RngStr As String
Dim intNum As Integer
Dim NumCnt As Integer
Dim RowCnt As Integer
Dim RngCel As Range
Dim RngRef As Range
NumCnt = 0
TempStr = ""
' 검색할 셀의 조건을 셀을 클릭해서 선택
Set RngRef = Application.InputBox("셀 선택", , Type:=8)
 
 
' 검색할 영역에서 선택된 셀과 같은 조건이 있으면 카운트
For Each RngCel In RngRef
RngStr = ShowFormulas(RngCel)
For intNum = 1 To Len(RngStr)
If IsNumeric(Mid(RngStr, intNum, 1)) Or Mid(RngStr, intNum, 1) = "." Then
TempStr = TempStr + Mid(RngStr, intNum, 1)
RngCel.Offset(0, NumCnt).Value = TempStr
Else
' 열의 위치 수정
NumCnt = NumCnt + 1
' 임시 문자열 초기화
TempStr = ""
End If
Next intNum
 
' 열의 위치 리셋
NumCnt = 0
Next
End Sub

이제 버튼 하나 만드시고 만든 버튼에 각각의 매크로 연결하시면 사용 가능하십니다.

ps> 어제 잠깐 고민해 보니 해결 방법이 보여서 진행해 보니 실수부분도 처리가능하네요.

If IsNumeric(Mid(TargetStr, intNum, 1)) Or Mid(TargetStr, intNum, 1) = “.” Then

TempStr = TempStr + Mid(TargetStr, intNum, 1)

ActiveCell.Offset(0, NumCnt).Value = TempStr

위과 같이 바꾸면 실수도 처리가 가능합니다. 추가로 팁을 올리기는 뭐해서 추가합니다.
영역 선택 부분도 조건식 추가하고 정수 처리하는 부분 제거하시면 됩니다.

 

첨부 자료 : 20150826-셀에서 숫자만 분리 추출

By vinipapa • 무른모 • 0 • Tags: 숫자 분리, 숫자만 추출, 엑셀, 팁

20150825154133

8월 25 2015

엑셀(EXCEL) – 일자가 기간내 포함된 것인지 확인하여 예약 상황 확인

이제 지금 지나가는 태풍이 끝나고 나면 가을걷이가 한창일 것입니다.
더운 여름 잠시 우리들은 일상을 떠나 휴가를 가서 지친 심신을 달래는데
휴가지의 민박집이나 펜션들은 손님 맞이에 정신이 없었을 것입니다.

휴가지에 숙박을 예약하려면 담당 직원들이 그 숙박지의 예약 상태를 알아야
적절히 룸을 운영하여 예약 잘못으로 인해 모처럼의 휴가를 망치지 않을 것입니다.
어떤 분이 홈페이지를 운영하기 전에 임시로 엑셀로 예약상황을 관리하시겠다고
질문을 올려주셨는데 그 해답?을 간단한 팁으로 올립니다.

http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3505287
(엑셀 날짜 작업 문의)

Option Explicit

Sub Count_Persons_In_Rooms()

Dim cnt As Integer
Dim Indate As Date
Dim RngCel As Range

Dim sht As Worksheet

‘ 검색된 자료를 출력할 위치를 구함
cnt = 1

‘ 검색된 자료를 출력할 시트를 생성, 있으면 경고없이 삭제
Application.DisplayAlerts = False

For Each sht In Worksheets
If sht.Name = “Persons_In_Rooms” Then
sht.Delete

End If
Next sht

‘ 검색된 자료를 출력하기 위한 시트 생성
Worksheets.Add(After:=Sheets(Sheets.Count)).Name = “Persons_In_Rooms”

Set sht = Sheets(“Persons_In_Rooms”)

Sheets(“sheet1”).Select

‘ 같은 시트에 출력할 때 아래 코멘트를 지우고 사용하면 됨
‘ Range(“G2”, Range(“H2”).End(xlDown)).ClearContents

Indate = Cells(1, 6).Value

For Each RngCel In Range(“B2”, Range(“B65536”).End(xlUp))

If Indate >= RngCel.Value Then
‘ check out 날짜는 그날을 포함할지 안할지는 결정(<, <=)
If Indate <= RngCel.Offset(0, 1).Value Then

cnt = cnt + 1

‘ 새 시트에 자료 생성
sht.Range(“A1”).Value = “일자”
sht.Range(“B1”).Value = “호실”
sht.Range(“C1”).Value = “인원”

Range(“F1”).Copy sht.Range(“A” & cnt)
RngCel.Offset(0, 2).Copy sht.Range(“A” & cnt).Offset(0, 1)
RngCel.Offset(0, 3).Copy sht.Range(“A” & cnt).Offset(0, 2)

‘ 같은 시트에 자료 출력할 때는 위의 6줄에 코멘트를 지우고 아래 코드를 사용
‘ Range(“G” & cnt).Value = RngCel.Offset(0, 2).Value
‘ Range(“G” & cnt).Offset(0, 1).Value = RngCel.Offset(0, 3).Value

End If
End If

Next

Application.DisplayAlerts = True

Sheets(“Persons_In_Rooms”).Select

End Sub

그냥 간단하게 출력하는 루틴을 만들었는데 특정 영역을 지정하거나 동적이름을 정의해서
더 활용할 수 있음. 더 확장하면 특정일로 부터 체크아웃하는 날까지 일자별로 리스트를
만들어서 출력할 수도 있으나 간단한 팁으로 올리는 것이므로 응용해서 사용바랍니다.

첨부 화일 : 20150825-Persons_In_Rooms

By vinipapa • 무른모 • 0 • Tags: Excel, Tip, 기간 확인, 엑셀, 예약

20150825142203

8월 25 2015

엑셀(EXCEL) – 글꼴이나 글자색이 다른 것을 조건으로 셀 카운팅

 

제 15호 태풍 고니가 올라와 사무실 바깥 유리창에 비와 바람을 뿌리고
오늘로 예정되었던 협력 회사 Audit는 태풍으로 인해 비행기가 연착되어
내일로 미뤄져서 심심해서 아질게에 올라온 질문 풀이를 시작하였습니다.

http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3507316
(글꼴이나 글자색이 다른 것을 조건으로 카운팅 가능한가요?)

Option Explicit

Sub Count_Special_Cell()

Dim cell_cnt As Integer

Dim RngCel As Range
Dim RngFont As Range
Dim RngRef As Range

cell_cnt = 0

‘ 검색할 영역 설정
Set RngRef = Range(“A1”, Range(“C1”).End(xlDown))

‘ 검색할 셀의 조건을 셀을 클릭해서 선택
Set RngFont = Application.InputBox(“셀 선택”, , Type:=8)

‘ 영역을 선택했을 때 에러 처리
If RngFont.Cells.Count > 1 Then

MsgBox “유효하지 않은 셀이므로 다시 선택하세요”

Exit Sub

End If

‘ 검색할 영역에서 선택된 셀과 같은 조건이 있으면 카운트
For Each RngCel In RngRef

If RngCel.Font.Color = RngFont.Font.Color And RngCel.Font.Bold = True _
And RngCel.Font.Underline = xlUnderlineStyleSingle Then

cell_cnt = cell_cnt + 1

End If

Next

‘ 검색된 셀의 갯수를 보여줌
MsgBox cell_cnt

End Sub

위 내용을 해석하면 선택된 셀의 컬러와 Bold, Underline(Single Line)과 값이 같으면
카운터를 세어서 보여주는 것입니다.

첨부 화일 : 20150825-셀 스타일별 카운트

By vinipapa • 무른모 • 0 • Tags: 셀 조건으로 카운팅, 엑셀, 팁

«< 30 31 32 33 34 >»

카테고리

  • 매킨토시 (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