如何通过excel中的特定字符将字符串分成多个单元格?

时间:2017-08-08 18:40:35

标签: excel

如何在excel单元格中分隔字符串,以便将结果放入不同的单元格中。

Apple_watch_1stGen_Used
Apple_watch_2ndGen_New
Apple_iPhone_5s_New
Apple_iPhone_5s_Used_referb

我想在excel中做的是在其他单元格中分隔这些值,以便我可以像在图像中那样使用它们。我想要的是令牌应该如此处所示。我现在只有A栏

enter image description here

我所做的是使用FIND功能寻找" _"然后将这些添加到B列,以便为我找到令牌。然后添加更多,但它变得复杂,不实用。有更简单的方法吗?
K2单元格公式(这是我开始计算字符数的地方)

=FIND("_",$B2)

L2细胞公式变得更加复杂

=FIND("_",$B2,K2+1)

M2细胞配方变得更复杂,然后N,O,P ......应该比我的更复杂

FIND("_",$B2,L2+1),LEN($B2)
在令牌系列中我有这个 B2细胞形成

=MID($B2,K2+1,L2-K2-1) 

2 个答案:

答案 0 :(得分:0)

您可以使用Excel VBA的分割功能制作一个新功能,我曾经使用它并从互联网上获取,不知道作者可以信用。

只需在Excel VBA模块上输入代码即可。

这是描述新功能的代码:

Sub DescribeFunction()
   Dim FuncName As String
   Dim FuncDesc As String
   Dim Category As String
   Dim ArgDesc(1 To 3) As String

   FuncName = "EXTRACTELEMENT"
   FuncDesc = "Returns the nth element of a string that uses a separator character/Retorna o enésimo elemento da string que usa um caractér separador."
   Category = 7 'Text category
   ArgDesc(1) = "String that contains the elements/String que contém o elemento"
   ArgDesc(2) = "Element number to return/ Número do elemento a retornar"
   ArgDesc(3) = "Single-character element separator/ Elemento único separador (spc por padrão)"

   Application.MacroOptions _
      Macro:=FuncName, _
      Description:=FuncDesc, _
      Category:=Category, _
      ArgumentDescriptions:=ArgDesc
End Sub

这就是功能:

 Function EXTRACTELEMENT(Txt As String, n, Separator As String) As String
 EXTRACTELEMENT = Split(Application.Trim(Txt), Separator)(n - 1)
 End Function

您必须输入(单元格,数字,分隔符:在您的情况下为“_”)

例如:Apple_watch_1stGen_Used在A1

EXTRACTELEMENT(A1,1,“_”)将输出Apple

EXTRACTELEMENT(A1,2,“_”)会输出手表

等等......

你可以使用Split功能来实现它。

答案 1 :(得分:0)

您可以使用REM Exports the Systems Environmental Variables reg export "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "C:\Software\%COMPUTERNAME%_ENV_VAR_BACKUP.reg" /y REM Searchs for Java path and changes if necessary IF "%PATH%" = "*jre1.8.0_141*" ( THEN **NOT SURE WHERE TO GO FROM HERE** ) 向导(在Text-to-Columns标签上)。但是如果你需要一个Excel公式:

首先定义一个命名公式。此公式在序列Data

中创建值数组
{1,99,198, ...}

然后,使用以下公式:

seq_99  Refers To:  =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)

根据需要填写和填写

enter image description here

算法:

  • B2: =INDEX(TRIM(MID(SUBSTITUTE($A2,"_",REPT(" ",99)),seq_99,99)),COLUMNS($A:A)) 字符替换为大量空格
  • 使用split
  • 的数组常量,使用MID返回值数组
  • start_num数组中的每个元素都可以去除多余的空格。
  • TRIM现在可用于按顺序返回数组中的每个元素。

如果使用“公式评估”工具,则可以查看每个步骤。