/ / Excel: Den umgebenden benannten Bereich in Excel abrufen - c #, .net, Excel, vsto, ms-office

Excel: Abrufen des umgebenden benannten Bereichs in Excel - c #, .net, excel, vsto, MS-Office

Ich habe eine Excel-Tabelle mit vielen benannten Bereichen,die eine hierarchische Struktur haben (ein Bereich enthält andere Bereiche). Die Bereiche haben keine Schnittpunkte und keine Multipel-Bereiche. Wie kann ich den umgebenden benannten Bereich eines bestimmten benannten Bereichs abschätzen (mit anderen Worten, ich möchte etwas wie eine Vater-Kind-Beziehung) Zum Beispiel: Bildbeschreibung hier eingeben

Hier habe ich Reichweite C. Nun möchte ich seinen "Vater" schätzen. In diesem Fall ist es B.

Antworten:

2 für die Antwort № 1

Wenn der "Elternteil" immer vollständig enthältKind und ist der kleinste Bereich (in Bezug auf die Zellzahl), der dies tut, dann könnte dies helfen. Ich weiß, es ist VBA und Ihre Tags implizieren VSTO, aber der Ansatz könnte immer noch zutreffend sein ...

Beachten Sie, dass es viele Fälle gibt, auf die nicht geprüft wird: Benannte Formeln sind eine solche.

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