如何每三列只允许一个单元格在同一行输入数据?
问:在工作表的同一行中,每三个单元格中只有一个单元格可以同时显示数据。如下图1所示,在“B6: D6”单元格区域,如果在“B6”单元格中输入数据,则“C6”和“D6”单元格中的内容将被清除;如果在“C6”单元格中输入数据,则“B6”和“D6”单元格中的内容将被清除。如果在“D6”单元格中输入数据,内容将在“B6”和“C6”单元格中清除。小区E6: G6、H6: J6等也是如此。下面的第7行到第20行也是一样的。如何实现这一点?
图1
根据工作表,分析下列数字的规律。列B,D,F,G,…对应的列号是2,3,4,5,6,7,…。每个数字除以3,每三个数字依次作为一组,它们的余数都是2,0,1,很好处理!
如果当前输入单元格所在列的列号除以3,余数为2,表示当前单元格在3个单元格组的第一个单元格中,则两个相邻单元格的内容应该清空。如果当前单元格所在列的列号除以3,余数为0,表示当前单元格位于3个单元格的中间,则相邻垂直单元格和顶部单元格中的内容应清空。如果当前单元格所在列的列号除以3,余数为1,表示当前单元格位于三个单元格中的最后一个,则前两个单元格中的内容应被清空。
根据这个想法,在工作表所在的模块中输入事件流程代码:
子工作表_选择更改(按值按目标)
调光范围
设置RNG=范围(“B6: s20”)。
有目标
如果没有交集(target,rng),就什么都没有。
如果(。列Mod 3)=2。偏移量(0,1)。ClearContents。偏移量(0,2)。ClearContents
ElseIf(。ColumnMod 3)=0,然后。偏移量(0,-1)。ClearContents。偏移量(0,1)。ClearContents
目标。列Mod 3)=1,然后。偏移量(0,-2)。ClearContents。偏移量(0,-1)。ClearContents
以防万一
以防万一
最后有
结束子级
如果工作簿中的所有工作表都需要实现上述功能,可以在工作簿模块中编写事件代码:
子工作簿_SheetSelectionChange(ByVal Sh作为对象,ByVal目标作为范围)。
调光范围
设置RNG=范围(“B6: s20”)。
有目标
如果没有交集(target,rng),就什么都没有。
如果(。列Mod 3)=2。偏移量(0,1)。ClearContents。偏移量(0,2)。ClearContents
ElseIf(。ColumnMod 3)=0,然后。偏移量(0,-1)。ClearContents。偏移量(0,1)。ClearContents
目标。列Mod 3)=1,然后。偏移量(0,-2)。ClearContents。偏移量(0,-1)。ClearContents
以防万一
以防万一
最后有
结束子级
代码的图片版本如下:
版权声明:如何每三列只允许一个单元格在同一行输入数据?是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。