Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1664to1668
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA - Intelligente Tab Spalten ansprechen
11.01.2019 15:55:13
Alexander
Hi zusammen,
bin so verzweifelt das ich mich hier neu angemeldet hab :-)
Ich versuche eine Spalte in einer intelligenten Tabelle (Einfügen Tabelle. In VBA heißen die Dinger glaub ich listobject. wobei ich schon den unterschied zwischen listobject und listobjects nicht verstehe) anzusprechen und aus den Daten in der Spalte einen Mittelwert zu ermitteln.
Diesen Mittelwert möchte ich dann in einem txtfeld Ausgeben.
Die Tabelle heißt: "tabData"
Die Spalte heißt: "Note"
Das Textfeld heißt: "txtNote"
Vielen Dank für Eure hilfe

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Range("tabData[[#Headers],[Note]]")
11.01.2019 18:09:48
Matthias
Hallo
als kleine Denk-Hilfe ...
mit: MsgBox Range("tabData[[#Headers],[Note]]").Offset(1, 0).Address
kannst Du Dir die Adresse anzeigen lassen.


Range("tabData[[#Headers],[Note]]").Offset(2, 0).Address

wäre dann die nächste Zeile der Spalte[Note]
Gruß Matthias
AW: Range("tabData[[#Headers],[Note]]")
15.01.2019 09:48:45
Alexander
Hi Matthias,
ja das funktioniert. Gibt es auch eine Funktion die mir die komplette Spalte addiert oder einen Mittelwert erzeugt?
AW: Range("tabData[[#Headers],[Note]]")
15.01.2019 13:46:37
Alexander
Wie viele Zeilen die Spalte in der Tabelle hat, wäre auch hilfereich...
=MITTELWERT(tabData[[#Alle];[Note]])
17.01.2019 00:26:35
Matthias
Hallo
Kannst Du doch direkt als Formel verwenden:
=MITTELWERT(tabData[[#Alle];[Note]])
Du kannst aber auch den Bereich markieren
Range(Range("tabData[[Note]]").Address).Select
oder sonst was damit machen
einfach den Bereich nur ausgeben:
MsgBox Range("tabData[[Note]]").Address
So kannst Du also auch den Mittelwert per VBA bilden, denn die Range-Adresse hast Du ja nun ;-)
Gruß Matthias
Anzeige
AW: =MITTELWERT(tabData[[#Alle];[Note]])
17.01.2019 10:58:31
Alexander
Weltklasse jetzt hab ich es!
Du bist mein Held des Tages! Danke dir! :)
Wie das mit Helden so ist, folgt nach der Welt Rettung die Nächste :-)
Das gleich möchte ich jetzt auf einer anderen Spalte machen.
Die Spalte heißt Status und es gibt drei Eintragsmöglichkeiten:
- Leer
- Draft
- Final
in Textfeldern möchte ich jetzt ausgeben wie oft welcher Zustand vorkommt.
Natürlich per VBA. Umständlich mit Schleifen und so bekomme ich es bestimmt hin. Gibt es einen coolen einfachen Weg?
Danke Dir
aber auch das geht mit Formeln
17.01.2019 12:02:33
Matthias
Hallo
Die Spalte heißt Status und es gibt drei Eintragsmöglichkeiten:
- Leer
- Draft
- Final

Was bedeutet bei Dir Leer?
Steht das Wort "Leer" in der Zelle oder ist die Zelle leer?
Wenn die Zelle leer ist, kannst Du das mit der Formel:
=ANZAHLLEEREZELLEN(tabData[Status]) ausgeben.
Steht das Wort "Leer" in der Zelle, musst Du
die Gültigkeitsregel um dieses Wort erweitern.
Tabelle1

 DEF
6DatumStatusNote
713.01.2019Draft1
814.01.2019Final2
915.01.2019  
1016.01.2019Draft1
1117.01.2019Final1
1217.01.2019Draft2

Datengültigkeit der Tabelle
ZelleZulassenDatenEingabe 1Eingabe 2
E7Liste Draft;Final 
E8Liste Draft;Final 
E9Liste Draft;Final 
E10Liste Draft;Final 
E11Liste Draft;Final 
E12Liste Draft;Final 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Anbei eine Beispieldatei.
https://www.herber.de/bbs/user/126855.xlsm
Gruß Matthias
Anzeige
AW: aber auch das geht mit Formeln
17.01.2019 14:07:16
Alexander
Hi Matthias,
danke für die Datei.
Ohne vba ist es auch voll simple. Excel an sich check ich voll ab auch Formeln, dass ist gar keine Thema.
Mich interessierts es das in VBAP zu machen. :-)
Bis jetzt bin ich soweit:
Private Sub Worksheet_Change(ByVal Target As Range)
'Variablen deklaration
Dim StatusSpalte As Integer
Dim NotenSpalte As Integer
Dim mw As Integer
Dim Tabrange As Variant
Dim WSName As Variant
'Variablen Zuweisung - Spalte in der der Status steht
StatusSpalte = 7
NotenSpalte = 6
WSName = ActiveSheet.Name
'Abfrage ob eine ?nderung sich ergeben hat
If Target.Column = StatusSpalte Then
ThisRow = Target.Row
If Target.Value = "final" Then
Cells(ThisRow, StatusSpalte + 1).Value = Now()
Cells(ThisRow, StatusSpalte + 2).Value = Application.UserName
ElseIf Target.Value = "draft" Then
Cells(ThisRow, StatusSpalte + 1).Value = ""
Cells(ThisRow, StatusSpalte + 2).Value = Application.UserName
Else
Cells(ThisRow, StatusSpalte + 1).Value = ""
Cells(ThisRow, StatusSpalte + 2).Value = ""
End If
End If
'Notenmittelwert errechnen und eintragen
If Target.Column = NotenSpalte Then
Tabrange = Range("tab" & WSName & "[[Note]]").Address
mw = Application.Average(Range(Tabrange))
ActiveSheet.Shapes.Range(Array("txtMarkInt")).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = mw
End If
Range("a2").Select
End Sub
Jetzt fehl mir doch das mit final, draft und leer Zellen. Leer heißt es steht nix drin :-)
Anzeige
AW: aber auch das geht mit Formeln
17.01.2019 14:36:19
Alexander
AnzDraft = WorksheetFunction.CountIf(Range("tab" & WSName & "[[Status VP]]"), "draft")
hab es geschafft :-)
Tabrange = Range("tab" & WSName & "[[Status VP]]").SpecialCells(xlCellTypeBlanks).Count
Die Funktion klappt auch. nur wenn ich keine leeren zellen habe, kommt eine debug fehler.
kann ich den iwie abfangen?

50 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige