언젠가 다른 사업부의 생산 부서에서 일하는 사원이 생산 일보를 엑셀에서 작성하는데
제품 아이템마다 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-셀에서 숫자만 분리 추출
8월 26 2015
엑셀(EXCEL) – 수식으로 된 셀에서 숫자만 각 셀로 분리하여 처리하기
언젠가 다른 사업부의 생산 부서에서 일하는 사원이 생산 일보를 엑셀에서 작성하는데
제품 아이템마다 F2를 눌러 =25+27+24 … 이런 식으로 입력하는 것을 보고 아이디어를
생각하다가 그만 둔 프로그램이 있었는데 아래의 질문과 같이 비슷한 내용이 있어서
이번에는 시간적 여유가 있고 해서 간단한 팁을 만들어 보았습니다.
http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3501134
(엑셀에서 셀 입력내용을 가져올수있을까요?)
간단히 해석하면 셀에 지속적으로 +, – 등으로 추가된 데이터를 분리해 달라는 내용입니다.
저번에 해결하려는 내용을 거꾸로 해석해서 두가지 버전으로 작성해 보았습니다. 우선
해당 셀이 공식(즉 산술식으로 구성되어 있는지 확인)하는 루틴을 작성해서 그 셀 타입이
‘Formulra’일 때만 데이터를 분리 처리하도록 함수를 만들어 인자를 넘깁니다.
이제 버튼 하나 만드시고 만든 버튼에 각각의 매크로 연결하시면 사용 가능하십니다.
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: 숫자 분리, 숫자만 추출, 엑셀, 팁