2017-05-14 1 views
-1

나는 인터넷에서 가져온 가치, 특히 일부 cryptocurriencies의 시가 총액을 가지고 있습니다. 엑셀에서 "외부 데이터 가져 오기"기능을 통해 이러한 데이터를 가져옵니다. 예 : 텍스트 형식의 데이터를로드합니다. 1000 bitcoin 값 대신에 1000을 얻는 대신 1000 BTC의 셀을 얻습니다. 따라서 그 데이터를 더 이상 사용할 수 없습니다. 이 값이 1000에서 1 또는 1000000까지 변동될 수 있다고 가정하면 오른쪽, 왼쪽의 함수를 사용하면 장벽에 도달하면 오른쪽과 왼쪽으로 텍스트 형식이 표시됩니다. 반면에 나는 테이블을 새로 고침 할 때마다 원래 상태로 돌아가서 사용자가 추가 한 열을 제거 할 때마다 텍스트를 열 구분 기호로 사용할 수 없습니다. 각 셀의 수를 동적으로 추정하기위한 제안은 언제나 환영합니다. 감사합니다.Excel/VBA 동적 숫자 및 텍스트 분리

답변

1

the Val function을 사용할 수 있습니다. 당신이 이후에있는 값을 포함하는 셀을 가정

활성 시트의 A1, 당신은 사용할 수 있습니다 :

Dim numericPart As Double 
numericPart = Val(Range("A1").Value) 

당신이 대신 Excel 수식을 원한다면, 그리고 공간이 사이에 항상있다 값과 텍스트 부분, 당신은 사용할 수 있습니다

=VALUE(LEFT(A1,FIND(" ",A1)-1)) 
0

문자에서 숫자를 분리하는 공백없이 작동 다른 워크 시트 함수 (이렇게 오래 숫자가 먼저 와서) :

=LOOKUP(9E+307,--MID(B9,1,{1,2,3,4,5,6,7,8,9,10})) 

숫자가 10 자리 이상인 경우 배열 상수를 확장하면됩니다.

+0

이 자리 나중에 무엇 온다면? 그걸 어떻게 수정 하시겠습니까? – Nikos

+0

@Nikos 시작에 '1'을 사용하는 대신 첫 번째 숫자를 찾으려면 FIND를 사용하십시오. –

0

인터넷에서 외부 데이터를 가져 오는 동안 데이터의 앞뒤에 공백이 있거나 인쇄 할 수없는 앞뒤 문자가있을 수 있습니다.

가장 안전한 방법은 일반 표현식을 사용하여 문자열에서 숫자 부분을 가져 오는 것입니다. A2에서, 다음과 같이 UDF를 시도되는 "1000 BTC을"가정

다음과 같은 표준 모듈에 UDF (사용자 정의 함수) 다음은 아래와 같이 워크 시트에서이 UDF를 사용하는 장소 ...

. .

=GetNumber(A2) 

UDF :

Function GetNumber(rng As Range) As Long 
Dim Num As Long 
Dim RE As Object, Match As Object, Matches As Object 
Set RE = CreateObject("VBScript.RegExp") 
With RE 
    .Global = False 
    .Pattern = "\d+" 
End With 
If RE.test(rng.Value) Then 
    Set Matches = RE.Execute(rng.Value) 
    GetNumber = Matches(0) 
End If 
End Function 
+0

감사합니다. 그러나 숫자가 1,000 일 때 어떻게됩니까? 위의 코드는 1을 반환합니다. – Nikos

+0

이 경우 한 줄만 변경하면됩니다. Set Matches = RE.Execute (Replace (rng.Value, ",", "")) – sktneer

관련 문제