2016-10-27 4 views
0
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, тогда я удалю, что есть какой-либо способ узнать это.экстракт колонка диапазон от формулы в excel с использованием макроса

Моя фактическая цель - найти формулу без значения столбца и строки. благодарит заранее.

ответ

0

Если вы хотите, чтобы получить 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 из двух возвращаемых значений.

+0

Но нет формулы исправления формулы, я хочу любое количество диапазонов от любой формулы. –

+0

Вам понадобится повторить строку 'rCell.Formula' и вытащить все диапазоны. Вы не указали какие формулы вы ищете. Если вы ищете формулы ** без ** диапазонов, то вы тоже можете это сделать, используя ту же идею. –

+0

Спасибо, приятель, я думаю, что это единственный способ узнать это, но есть ли какие-нибудь вещи для удаления диапазонов. и еще одна вещь, что формула не статична, может быть что угодно. если у вас есть идея удалить диапазон, пожалуйста, предложите мне. я хочу только формулу без диапазона –

Смежные вопросы