簡體   English   中英

使用宏從Excel中的公式中提取列范圍

[英]extract column range from formula in excel using macro

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,那么我將其刪除,可以通過任何方式找到它。

我的實際目的是找到沒有列和行值的公式。 提前致謝。

如果要從公式中獲取A10和F10,可以使用此方法,將范圍傳遞給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

它對兩個返回值執行Debug.Print

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM