Я пытаюсь перевести одну цифру числа в одну ячейку из одной рабочей книги в другую.

Пример:

Worksheet 1: 1,234.56
Worksheet 2: A1  A2  A3  A4  A5  A6
             1   2   3   4   5   6

Это формулы, которые я использовал, но последняя формула для последней цифры неверна.

Формула А1: это работает

=IF('Worksheet 1'!D7>9999999.99,MID('Worksheet 1'!D7,7,1),
    IF('Worksheet 1'!D7>999999.99,MID('Worksheet 1'!D7,6,1),
       IF('Worksheet 1'!D7>99999.99,MID('Worksheet 1'!D7,5,1),
          IF('Worksheet 1'!D7>9999.99,MID('Worksheet 1'!D7,4,1),
             IF('Worksheet 1'!D7>999.99,MID('Worksheet 1'!D7,3,1),
                IF('Worksheet 1'!D7>99.99,MID('Worksheet 1'!D7,2,1),
                   IF('Worksheet 1'!D7>9.99,MID('Worksheet 1'!D7,1,1),"")))))))

A6 ячейка: это не работает:

=IF(MID(RIGHT('Worksheet 1'!D7,2),1,1)=".",MID(RIGHT('Worksheet 1'!D7,2),1,1),
    IF(MID(RIGHT('Worksheet 1'!D7,2),1,2)=".",RIGHT('Worksheet 1'!D7,1),"0"))

1 ответ1

0

Не уверен, что понимаю, почему у вас такая масштабная формула if-else, и как вы используете ее в каждой ячейке (A1, A2 и т.д.).

Итак, почему бы не использовать более простую формулу для каждой цифры, которую вы хотите вырезать?

Что-то вроде следующего должно работать для вас:

Для каждой ячейки в одном и том же столбце, начиная с строки 1, используйте следующую формулу:

=LEFT(MOD('Worksheet 1'!$D$7,POWER(10,9-ROW()))/POWER(10,9-ROW()-1))

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

Некоторое объяснение:

POWER(10,9-ROW()) вычисляет делитель на основе степеней 10.

Сила 9-ROW() даст 8, 7, 6, 5, ..., когда вы идете вниз по столбцу, ЕСЛИ вы, конечно, начинаете с 1-й строки.

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

..

Чтобы начать с строки, отличной от 1, или извлечь цифры, начинающиеся с позиций, отличных от 10 000 000, просто измените 9 чтобы X -ROW() давала первую степень из десяти, с которой вы хотите начать.

..

Обратите внимание, что вместо « LEFT » в вышеприведенном, вы можете использовать « ROUNDDOWN » для обнуления десятичных разрядов (т.е. что-то вроде этого ROUNDDOWN(MOD.../POWER..., 0) .

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