【问题标题】:Remove / Filter Cell Contents in Microsoft Excel 2013在 Microsoft Excel 2013 中删除/过滤单元格内容
【发布时间】:2015-02-04 15:30:31
【问题描述】:

我正在寻找清理电子表格中某个特定单元格内容的最佳方法。与现在一样,D 列在同一个单元格中列出了城市、州和高中(屏幕截图 #1)。我需要将这些值拆分为 3 个唯一的列/单元格,如屏幕截图 #2 所示。我将如何做到这一点?

** 注意 - 下面的示例只是一个样本大小。我有数千个细胞可以执行此操作。

现有单元格格式:

新格式(希望如此):

【问题讨论】:

  • 到目前为止您尝试过什么?这应该是相当微不足道的。你的问题是关于优化的吗? (如果是,请出示您当前的代码)

标签: vba excel excel-formula excel-2010


【解决方案1】:

使用 Text-to-Columns "delimited" 在逗号上拆分,然后再次使用它"fixed width" 将 state 从学校名称中拆分出来(假设 state 始终为 2 个字符)。如果需要,使用 TRIM 清理空间。

【讨论】:

    【解决方案2】:

    您好,这样的事情应该查看 D 行中的所有单元格,并在接下来的 3 列中返回您要查找的值;可能需要一点调整

    For each cell in Range("D2:D & Range("D2".End(xlDown).Row)) cell.offset(columnOffset:=1) = left(cell,instr(String1:=cell, String2:= ",")) cell.offset(columnOffset:=2) = Mid(cell,instr(String1:=cell, String2:= ",")+1,2) cell.offset(columnOffset:=3) = right(cell,len(cell)-instr(String1:=cell, String2:= ",")+3) Next

    【讨论】:

      【解决方案3】:

      我尝试了 Jake Duddy 的代码,它包含很多错误,我不知道它是否有效。同时你可以试试下面的代码。

      Dim LastRow As Long
      Dim State_L As String
      Dim City_L As String
      Dim HS_L As String
      
      LastRow = Range("D" & Rows.Count).End(xlUp).Row
      
      
      For i = 2 To LastRow
      
          City_L = Left(Range("D" & i), InStr(1, Range("D" & i), ",") - 1) ' Getting up to comma
          State_L = Mid(Range("D" & i), InStr(1, Range("D" & i), ",") + 1, 2) 'Getting after comma for 2 characters
          HS_L = Mid(Range("D" & i), InStr(1, Range("D" & i), ",") + 3, Len(Range("D" & i)) - InStr(1, Range("D" & i), ",")) 'Getting after comma+2 characters upto the end
      
          Range("E" & i).Value = City_L
          Range("F" & i).Value = State_L
          Range("G" & i).Value = HS_L
      
      Next
      

      【讨论】:

        【解决方案4】:

        选择您要处理的单元格并运行这个小宏:

        Sub ParseData()
            Dim r As Range, L As Long, L1 As Long, L2 As Long
        
            For Each r In Selection
                t = r.Text
                L = Len(t)
                L1 = InStr(1, t, ",")
                For i = 1 To L
                    If r.Characters(i, 1).Font.Italic = True Then
                        L2 = i
                        Exit For
                    End If
                Next i
        
                r.Offset(0, 1).Value = Mid(t, 1, L1 - 1)
                r.Offset(0, 2).Value = Mid(t, L1 + 1, L2 - L1 - 1)
                r.Offset(0, 3) = Mid(t, L2)
                r.Offset(0, 3).Font.Italic = True
            Next r
        End Sub
        

        例如:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-09-30
          • 2013-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-13
          • 1970-01-01
          相关资源
          最近更新 更多