如何将Google Form多选项组合映射为唯一十进制数?
一、能否让Google Form自动输出该十进制数?
Google Form本身不支持直接生成这种映射的十进制数,但可以通过联动Google Sheets实现自动计算输出——表单提交的所有数据会实时同步到关联的Sheets表格,你可以在Sheets中用公式完成选项到十进制数的转换。
二、具体实现步骤
1. 关联表单到Google Sheets
打开你的Google Form,点击右上角「回应」标签页,再点击「链接到表格」,选择新建或已有的Sheets表格,提交的表单数据会自动同步到这里。
2. 给每个选项分配二进制权重
为了保证每个选项组合对应唯一十进制数,给每个选项分配一个2的幂次权重(比如第一个选项对应2^0=1,第二个对应2^1=2,第三个2^2=4,以此类推)。单选问题中同一时间只有一个选项会被标记为1,多选问题则可以有多个1,最终所有选中选项的权重相加就是唯一的十进制数。
3. 在Sheets中编写公式计算
假设你的表单数据在Sheets的A列到D列:
- A列:时间戳
- B列:单选问题「选择你的年龄组」(选项:Q1A、Q1B、Q1C)
- C列:多选问题「你进行的运动类型」(选项:Q2A、Q2B、Q2C)
首先在空白列(比如E到J列)生成每个选项的选中状态(1=选中,0=未选中):
- E列(Q1A状态):
=IF(B2="Q1A",1,0) - F列(Q1B状态):
=IF(B2="Q1B",1,0) - G列(Q1C状态):
=IF(B2="Q1C",1,0) - H列(Q2A状态):
=IF(ISNUMBER(SEARCH("Q2A",C2)),1,0) - I列(Q2B状态):
=IF(ISNUMBER(SEARCH("Q2B",C2)),1,0) - J列(Q2C状态):
=IF(ISNUMBER(SEARCH("Q2C",C2)),1,0)
然后在K列计算最终的十进制数(给每个状态分配对应权重,相加即可):=E2*32 + F2*16 + G2*8 + H2*4 + I2*2 + J2*1
这里的32、16、8、4、2、1分别对应Q1A到Q2C的权重(25到20),你可以根据选项数量调整权重值。
三、二进制转十进制的函数方案
如果先通过公式生成了完整的二进制字符串(比如把E到J列的状态拼接成100100),可以用Google Sheets的BIN2DEC()函数转换,比如:=BIN2DEC(E2&F2&G2&H2&I2&J2)
但注意BIN2DEC()仅支持最长10位的二进制字符串,如果你的选项数量超过10个,建议直接用「权重相加」的方法,避免长度限制问题。
内容的提问来源于stack exchange,提问作者Ratan Prasad

