数字代表文本字符串

时间:2014-04-02 21:56:12

标签: forms excel sorting numbers

网络表单收集学校乐队组织中学生的数据。表单数据被输入到Google工作表中,然后填充合并模板,合并后的表单将通过电子邮件发送给收件人。父母需要打印,签名和转入表单。在这个乐队中有数百个孩子,在注册时,当表格被打开时,如果你在角落里有一个简短的排序号码,那么更容易对堆栈中的所有文件进行排序...志愿者孩子不能很好地应用字母表。我正在尝试创建一个公式,它会将我的排序编号合并到提交表单后收到的PDF每页的标题中。我希望它基于姓氏和名字,并能够动态创建该数字(在谷歌表中),因为当用户提交表单时,合并几乎立即发生。因此,期望一种excel类型公式,其将导致表示孩子姓名的数字。我希望每个数字都是唯一的,但前几个字母的某些名称相同,有些名称只有2个字符。我尝试制作A = 10,B = 11,z = 35等(所以都是2位数)所以,只使用前3个字符,鲍勃琼斯将= 192423112411 - 几乎不容易对纸张排序一目了然它没有也非常区别鲍勃简斯。最好是4位数。我也查看了= code()公式,它也出现了很长的数字。任何建议表示赞赏。谢谢! 附注:电子表格使用什么方法对文本进行排序?他们对角色的重量是什么?在我开始使用automerge工作之前,我为列表中的每个孩子分配了一个高于下面的数字并低于上面的数字(在工作表上),然后进行了合并。

3 个答案:

答案 0 :(得分:0)

一种选择是:

  • 按字母顺序对名称列表进行排序
  • 添加排序编号列,并添加=TEXT(row(),"0000")公式以生成唯一ID
  • 合并电子表格中的
  • ,使用VLOOKUP函数检索该特定名称的唯一ID。

答案 1 :(得分:0)

首先,文字墙很难读懂。请尝试做一些格式化,以便尝试帮助您的人可以轻松地按照您要传达的内容进行操作。

我个人建议使用带连字符的系统。姓氏的第一个首字母转换为数字,后跟连字符,后跟其名字的前两个字母转换为数字。

假设你区分大写和小写,鲍勃琼斯变成11-1956,如果你将所有东西都转换成大写,那么11-1924变成大写,我猜这更有意义。

您可以使用此VBA函数将名称转换为类似以下的系统:

Function ConvertToIndex(strInput As String) As String
Dim strLast As String
Dim arrName() As String
Dim strFirst1 As String
Dim strFirst2 As String

arrName = Split(strInput, " ")

strLast = Mid(arrName(1), 1, 1)
strFirst1 = Mid(arrName(0), 1, 1)
strFirst2 = Mid(arrName(0), 2, 1)

ConvertToIndex = Asc(UCase(strLast)) - 55 & "-" & Asc(UCase(strFirst1)) - 55 & Asc(UCase(strFirst2)) - 55

'MsgBox ConvertToIndex

End Function

答案 2 :(得分:0)

感谢Tim,Nutsch和Mad Tech的回复。我很感激你的意见。对不起,段落太长了,我罗嗦了。由于会员在提交后立即获得合并的PDF表格,我需要在输入后立即根据名称编号,而不是在事后;所以我一直在寻找一个可以存在于工作表中的公式。有趣的VBA功能也是如此。之后,我可以安排对它们进行编号,也许是当工作表被打开时。到那时我会知道乐队中的所有人,并且可以像以前那样分配数字。再次感谢!