2016-01-12 5 views
0

Из этого сообщества я нашел полезную формулу для извлечения чисел из клеток excel.Извлечь числа из ячейки excel ОШИБКА

Пример ячейки:

Теоретические ЯТ: 9,53

И формула:

=VALUE(TRIM(LEFT(SUBSTITUTE(RIGHT(A4;LEN(A4)-FIND(":";A4));".";REPT(" ";LEN(A4));2);LEN(A4)))) 

Однако то, что формула возвращается не 9,53, а 196030 !

Может кто-нибудь указать, почему это происходит?

+1

Только что испытал это ... и я получаю 9.53. Проверьте формулу еще раз и убедитесь, что формат ячейки установлен на общий – Munir

+0

. Try: '= VALUE (SUBSTITUTE (TRIM (LEFT (ЗАМЕНА (ПРАВО (A4; LEN (A4) -FIND (": "; A4)); . "; REPT (" "; LEN (A4)); 2); LEN (A4)));". ";", "))' –

+0

Если цифры в ваших данных * всегда * последняя часть записи и * всегда * приходят после двоеточия ':' то вы должны иметь возможность использовать эту формулу: '= - RIGHT (SUBSTITUTE (A1;": "; REPT (" "; LEN (A1))); LEN (A1)) ' – tigeravatar

ответ

0

Если вы заинтересованы в использовании VBA, вы можете использовать эту функцию или проигнорировать ее.

Public Function getNumber(fromThis As Range) As Double 
     Dim retVal As String 
     Dim ltr As String, i As Integer, european As Boolean 

     retVal = "" 
     getNumber = 0 
     european = False 

     On Error GoTo last 
     If fromThis.Value Like "*.*,*" Then 
      european = True 
     End If 

     For i = 1 To Len(fromThis) 
      ltr = Mid(fromThis, i, 1) 
      If IsNumeric(ltr) Then 
       retVal = retVal & ltr 
      ElseIf ltr = "." And (Not european) And Len(retVal) > 0 Then 
       retVal = retVal & ltr 
      ElseIf ltr = "," And european And Len(retVal) > 0 Then 
       retVal = retVal & "." 
      End If 
     Next i 
     getNumber = CDbl(retVal) 
last: 
    End Function 

 Смежные вопросы

  • Нет связанных вопросов^_^