Добавьте = к каждой ячейке в столбце Excel, чтобы принудительно выполнить расчет дроби

Добавьте = к каждой ячейке в столбце Excel, чтобы принудительно выполнить расчет дроби

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

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

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

Я пробовал менять форматирование ячеек (числовое, научное и т. д.), но ничего не изменилось.

Кроме того, если A1 равно 22/7, то B1 =ЗНАЧЕНИЕ(A1) также не работает, я получаю #ЗНАЧЕНИЕ!

Так как же принудительно рассчитать значения каждой ячейки?

решение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

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

введите описание изображения здесь

решение2

Если вы знаете, как использовать 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()

решение3

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

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

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

решение4

Следующий ответ похож на первый в ссылке из комментариев. Он "чище", хотя ответ, данный тогда (2010), был основан на аспектах Excel, которые больше не существуют.

Я предполагаю, что вы хотите заменить данные вычисленными результатами. Если так, сделайте следующее, но если нет, сделайте так, чтобы результаты оказались в другом месте, которое удобно.

Вставьте вспомогательный столбец и введите следующую формулу (например, в ячейку B1):

= "=" & A1

Excel больше не делает отвратительной вещи, считая начальный 'символ символом форматирования, как это было раньше с 1-2-3, но в любом случае нет необходимости его использовать, поскольку Excel прекрасно начинает текстовую строку с «=». Так что это самое простое, что вы можете сделать, на самом деле.

Заполните или скопируйте/вставьте по мере необходимости. Выделите все ячейки с формулами и скопируйте. Затем перейдите в ячейку A1 и Paste|Special|Valuesпоместите РЕЗУЛЬТАТЫ вышеуказанной формулы (НЕ формулы) «сверху» начальных данных. Затем удалите вспомогательный столбец. Теперь у вас будет что-то вроде:

=22/7

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

Выделите все это еще раз (или сделайте это сразу после P|S|M и удалите вспомогательный столбец позже) и используйте Find and Replaceдля поиска «=» и замените его на «=»...

Да, найдите знак равенства и замените его самим собой. Excel с радостью это сделает и, в отличие от многих других методов, не будет продолжать считать его текстом после того, как сделает это. Если вы хотите всегда знать, какой был исходный материал, оставьте его таким. Изучение ячейки позволяет вам всегда видеть, что эта, например, началась с "22/7", потому что она все еще там после "=". Если вам это не нужно, выделите их все, скопируйте и P|S|V еще раз, чтобы оставить на месте только результаты вычислений.

Все сделано.

(Кстати, это одна из тех ситуаций (как ни странно, о которой НИКОГДА не говорили), нечастая, но она всплывает, чтобы удивить нас, в которой вы не можете получить Paste|Special|Multiplyвывод конкатенации на 1 и увидеть, как все это меняется на значения. Он останется как "=22/7" и будет находиться на левом краю ячейки, как текст. Вам придется вручную изменять каждый с помощью F2-Enter.)

Все вышесказанное, симпатичный маленький макрос — это «золотой стандарт». Быстро, легко, вы можете назначить его кнопке для использования в новом материале, это просто хорошо. Пока вам разрешено их использовать. Но это выглядит как уборка для вас, создателя электронной таблицы, а не то, чем пользователи будут заниматься после того, как вы создадите электронную таблицу. Так что можно подумать, что большинство организаций справятся с этим. Ученик Гэри выглядит довольно просто. Энтони выглядит более сложным, но тоже довольно простым.

И... не хочу вас беспокоить... но вы всегда можете добавить макрос для какой-нибудь домашней работы, например, пока у вас открыта электронная таблица, использовать ее, а затем удалить или просто сохранить в формате .xlsx, чтобы Excel удалил макрос за вас. Просто говорю...

Из связанного вопроса, на который я ссылался, EVALUATE()было бы забавно использовать. Но это более хлопотно, так как вам придется делать несколько вещей, которые немного сложнее, чем подход выше.

Я бы не рекомендовал подход «разорвать и собрать заново», который предлагает Михтан, просто потому, что ваши данные могут быть более сложными, чем буквально все, разделенное и использующее косую черту для отображения. Если это так, сейчас или в будущем вам придется расширять то, что ищет эта формула, чтобы справиться со всеми возможными ситуациями. В этой ситуации, возможно, не самая маленькая проблема, но если существует простое решение, которое позволяет избежать всего этого, почему бы не использовать его вместо этого. Тем не менее, этот подход тоже сработает и может быть необходим в зависимости от того, как ваши данные могут быть доставлены вам в будущем.

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

Связанный контент