/ / Excel: Obtener el rango con nombre circundante en Excel - c #, .net, excel, vsto, ms-office

Excel: Obtención del rango de nombre circundante en Excel: c #, .net, excel, vsto, ms-office

Tengo una hoja de Excel con muchos rangos con nombre,que tienen una estructura jerárquica (un rango contiene otros rangos). Los rangos no tienen intersecciones ni áreas de múltiples conductos. ¿Cómo puedo estimar el rango con nombre de un rango de rango con nombre específico (en otras palabras, quiero obtener algo así como una relación padre-hijo). Por ejemplo: enter image description here

Aquí tengo el rango C. Ahora quiero estimar su "padre". En este caso es B.

Respuestas

2 para la respuesta № 1

Si el "padre" siempre contiene completamente elhijo y es el rango más pequeño (en términos de recuento de células) que lo hace, entonces esto podría ayudar. Me doy cuenta de que es VBA y sus etiquetas implican VSTO, pero el enfoque aún puede ser aplicable ...

Tenga en cuenta que hay muchos casos sin verificar: las fórmulas con nombre son una de ellas.

Public Function ParentName(rng As Range) As String

Dim intersection As Range
Dim possibleParent As Range
Dim nm As Name

Dim rngCellCount As Long
Dim intersectCellCount As Long
Dim possParentCellCount As Long
Dim rangeParentCellCount As Long

rngCellCount = rng.Cells.Count

For Each nm In Names
Set possibleParent = nm.RefersToRange
Set intersection = Application.Intersect(rng, possibleParent) " which cells are common between the target and possible parent?
If Not intersection Is Nothing Then " Nothing means no cells in common
intersectCellCount = intersection.Cells.Count
possParentCellCount = possibleParent.Cells.Count
" if intersection is same size as child then child is completely contained
If intersectCellCount = rngCellCount And possParentCellCount > intersectCellCount Then
If rangeParentCellCount > possParentCellCount Or rangeParentCellCount = 0 Then
" record name of parent if smaller than best so far (or if we haven"t already found a parent at all)
parentName = nm.Name
rangeParentCellCount = possParentCellCount
End If
End If
End If
Next

End Function