У меня есть несколько ячеек Excel в формате 22/7, 355/113, 3927/1250 и так далее.

Как добавить = к каждой ячейке, чтобы вычислить фактическое числовое значение?

Использование конкатенации текста, как показано в вопросе: вставка текста в начало каждой ячейки столбца не работает (текст добавляется).

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

Кроме того, если A1 равен 22/7, то создание B1 = VALUE(A1) также не работает, я получаю #VALUE!

Итак, как заставить вычислять значения каждой ячейки?

3 ответа3

1

Следующая функция листа работает точно так, как вы просили:

=LEFT(A1,FIND("/",A1)-1)/RIGHT(A1,LENGTH(A1)-FIND("/";A1))

Что он делает, так это находит косую черту в дроби, а затем разбивает строку на части перед косой чертой и на часть позади косой черты. Затем он делит обе части, так что вы получите десятичную.

1

Если вы знаете, как использовать Powershell, вы можете использовать его для изменения содержимого ячейки. Для значений в ячейках с A1 по A3 на листе 1 в таблице Excel с именем Example.xlsx с помощью следующего сценария

$FilePath = 'C:\Users\Username\Documents\Example.xlsx'
# Instantiate the COM object
$Excel = New-Object -ComObject Excel.Application
$Workbook = $Excel.Workbooks.Open($FilePath)
$Sheet = $Excel.WorkSheets.item("sheet1")
$Sheet.activate()

$Sheet.Range('A1:A3').NumberFormat="" 

foreach ($Cell in $Sheet.Range('A1:A3').Cells) {
 $Cell.Value2 = '=' + $Cell.Value2
 }

$WorkBook.Save()
$WorkBook.Close()
$Excel.Quit()
1

Скажем, у нас есть данные как:

Запуск этого короткого макроса VBA:

Sub MakeEquation()
    Dim N As Long, i As Long

    N = Cells(Rows.Count, "A").End(xlUp).Row

    For i = 1 To N
        With Cells(i, 1)
            .Formula = "=(" & .Value & ")"
        End With
    Next i
End Sub

будет производить:

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