使用宏从excel中的公式中提取列范围

时间:2016-10-27 09:48:35

标签: excel vba excel-vba macros

Sub AddNameNewSheet1()
    Dim wsToCopy As Worksheet, wsNew As Worksheet
    Dim Newname As String
    Newname = InputBox("Number for new worksheet?")
    Set wsToCopy = ThisWorkbook.Sheets("Sheet1")
    Set wsNew = ThisWorkbook.Sheets.Add
    If Newname <> "" Then
        wsNew.Name = Newname
    End If
    wsToCopy.Cells.Copy wsNew.Cells
    Dim cell As Range
    Dim bIsNumeric As Boolean
    Dim testFormula As String
    bIsNumeric = False

    For Each cell In wsNew.Range("A1:M40")
        If cell.HasFormula() = True Then
           If bIsNumeric Then
                If testFormula = CStr(cell.Formula) Then
                    cell.Value = "<"
                Else
                    testFormula = cell.Formula
                    cell.Value = "F"
                End If
           Else
             testFormula = cell.Formula
             cell.Value = "F"
           End If
           bIsNumeric = True

        ElseIf IsNumeric(cell) = True Then
           bIsNumeric = False
           If Len(cell) > 0 Then
               cell.Value = "N"
           End If

        Else
           bIsNumeric = False
           cell.Value = "L"

        End If
    Next cell
End Sub

我想提取在公式中应用的列和行。例如, 如果公式是 = SUM(A10:F10)那么我想要A10和F10然后我删除那是有任何方法来找出它。

我的实际目的是找到没有列和行值的公式。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果你想从公式中得到A10和F10,你可以使用它,将你的范围传递给document.addEventListener("DOMContentLoaded", function () { var buttons = document.querySelectorAll(".deleteBtn"); function removeItem (e) { var rows = document.querySelectorAll("tr"); rows[this].parentNode.removeChild(rows[this]); } for (var i = 0; i < buttons.length; i++) { buttons[i].addEventListener("click", removeItem); } })

strRange

它会返回两个返回值的Sub Extract_Ranges_From_Formula() Dim strRange As String Dim rCell As Range Dim cellValue As String Dim openingParen As Integer Dim closingParen As Integer Dim colonParam As Integer Dim FirstValue As String Dim SecondValue As String strRange = "C2:C3" For Each rCell In Range(strRange) cellValue = rCell.Formula openingParen = InStr(cellValue, "(") colonParam = InStr(cellValue, ":") closingParen = InStr(cellValue, ")") FirstValue = Mid(cellValue, openingParen + 1, colonParam - openingParen - 1) SecondValue = Mid(cellValue, colonParam + 1, closingParen - colonParam - 1) Debug.Print FirstValue Debug.Print SecondValue Next rCell End Sub