1

Я должен интерпретировать данные для научных отчетов. Все данные представляются в одних и тех же единицах, однако лаборатория отправляет данные в разных единицах.

Я хотел бы знать, как сделать макрос, который можно применить к выбору ячеек или столбцов для преобразования результата (разделить число на 1000).

Сложность в том, что числа часто представлены как «> 5», и в этом случае мне понадобится макрос, чтобы изменить его на «> 0,005».

Поскольку мои данные часто содержат более 50 столбцов, это действительно должен быть макрос, чтобы я мог выделить столбец и щелкнуть макрос. После этого содержимое ячеек будет заменено пересмотренными цифрами.

1 ответ1

2

Если там есть не более одного символа, то для значения в A1 , следующая формула добьется цели:

=IF( ISNUMBER(A1), A1/1000, LEFT(A1,1) & MID(A1,2,LEN(A1)-1)/1000 )

То есть: если это простое число, то просто разделите на 1000, используя A1/1000 . В противном случае скопируйте первый символ, используя LEFT(A1, 1) , и используйте & чтобы объединить оставшиеся символы от позиции 2 до конца, заданного MID(A1, 2, LEN(A1)-1) и разделенного на 1000.

OpenOffice.org

(Чтобы увидеть десятичные дроби после деления на 1000, вам может потребоваться установить форматирование результирующих ячеек, чтобы фактически отображать десятичные дроби. Если нет, то вместо 0.004 может отображаться 0 )

Я не могу проверить это как макрос (OpenOffice.org имеет другой синтаксис), но, возможно, это поможет вам начать. Полностью основанный на некотором быстром Google-фу, чтобы перевести вышеупомянутое, хотя:

Function DivideByThousand(s)
     If Application.WorksheetFunction.IsNumber(s) Then
         DivideByThousand = s / 1000
     Else
         DivideByThousand = Left(s, 1) & Mid(s, 2, Len(s)-1)/1000
     End If
End Function

Sub RecalculateSelection
    Dim cell As Excel.Range
    For Each cell In Selection
        cell.Value = DivideByThousand(cell.Value)
    Next cell
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .