Создать таблицу истинности в excel

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

Пример

пример 4-битной таблицы истинности


person Jonathan Camilleri    schedule 16.12.2015    source источник
comment
Я думаю, что это может быть целью для VBA подход.   -  person    schedule 16.12.2015


Ответы (5)


Замените FirstCell статической ссылкой на ячейку, которая содержит первое значение 2 ^ 1, например. $D$1 для 4-битной таблицы (16 значений) и автозаполнение остальной части сетки (в примере A1:D16)

=IF(MOD(ROW()-ROW(FirstCell),POWER(2, ((COLUMN() - COLUMN(FirstCell)) * -1) + 1)) >= (POWER(2, ((COLUMN() - COLUMN(FirstCell)) * -1) + 1) / 2),1,0)

Логика этого такова:

Если текущая строка модуля 2 столбца силы тока (* -1, так как первое значение находится в последнем столбце и + 1, потому что оно начинается с 0) больше или равно половине 2 столбца силы тока, поместите значение как 1, иначе поставить значение 0.

person Jonathan Camilleri    schedule 16.12.2015

Текущий рекомендуемый ответ мне не помог. Для более простого метода я бы рекомендовал следующую формулу:

=IF(MOD(FLOOR((ROW()-ROW(TopRight))/(2^(COLUMN(TopRight)-COLUMN())), 1),2)=0,0,1)

Где TopRight — верхняя правая ячейка таблицы истинности.

Например, если вы создаете таблицу истинности с 8 записями, которая начинается с A3, замените TopRight на $H$3, а затем перетащите формулу из стороны в сторону и вниз.


Основное объяснение того, что происходит: в таблицах истинности строки чередуются 1 или 0 каждые 2 ^ n количества строк, где n — это количество столбцов, на которое данный столбец отстоит от крайнего правого столбца.

person DavisDude    schedule 01.03.2019

Другие ответы могут расстроить Буля. Этот стремится быть более логическим.

Вам нужно заполнить первую строку (2) 0

Для столбца LSB (D) — инвертировать:

  • =NOT(D2)*1 (формула для ячейки D3, скопирована в D4:D17)
  • Это инвертирует значение из строки выше. Нумификация *1 необходима, чтобы не видеть TRUE или FALSE

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

Для всех остальных столбцов - Добавить:

  • =XOR(AND(D2:$D2),C2)*1 (формула для ячейки C3, скопирована во все ячейки A3:C17)
  • Для функции ADD вы хотите выполнить операцию XOR над значением выше в столбце с результатом И всех битов во всех столбцах справа от него. (Другими словами: если все биты справа от бита выше равны 1, то вы должны инвертировать значение бита выше. Эта формула ДОБАВИТЬ работает для любого количества столбцов.)
  • Диапазон AND ссылается на одну строку вверх и один столбец вправо, на столбец $D LSB, а также на одну строку вверх. Таким образом, якорь $D для столбца LSB позволяет копировать в любой другой столбец.
  • Опять же, *1 используется для нумерации результирующего TRUE/FALSE.

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

person stevesliva    schedule 26.11.2020

Вот однострочный Microsoft 365:

=TRANSPOSE(LET(n,5,m,2^n,x,SEQUENCE(n,m,0),y,FLOOR(x/m,1),z,FLOOR((x-y*m)/2^(n-1-y),1),MOD(z,2)))

n - это количество необходимых столбцов, m затем сохраняет длину каждого столбца.

Формула находит строку x и сохраняет значение в y, а затем последовательно делит каждую строку пополам в правильном формате и выводит результат mod 2 для получения набора входных данных таблицы истинности.

TRANSPOSE используется, потому что SEQUENCE помещает числа слева направо, сверху вниз.

person JMP    schedule 02.07.2021

0 0 0 0  
0 0 0 1   
0 0 1 0   
0 0 1 1   
0 1 0 0    
.....   

помните, что цифры только 0 или 1.

для столбца D: D2=1-D1
для столбца C: C2=IF(D1=1,1-D1,D1)
для столбца B: B2=IF((C1=1)*(D1=1),1-B1, B1)
.....

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

person alvaro    schedule 24.06.2018