Note: The other languages of the website are Google-translated. Back to English

Cum se afișează primul element din lista derulantă în loc de gol?

doc listă derulantă implicit la top 1

Lista derulantă dintr-o foaie de lucru ne poate ajuta să facilităm introducerea datelor, trebuie doar să selectăm articolele fără să le tastăm unul câte unul. Dar, cândva, când faceți clic pe lista derulantă, acesta trece mai întâi la elementele goale în loc de primul element de date, după cum se arată în următoarea captură de ecran, acest lucru poate fi cauzat de ștergerea datelor sursă la sfârșitul listei. Poate fi enervant faptul că trebuie să derulați înapoi la începutul unei liste lungi pentru fiecare celulă de validare a datelor necompletate. În acest articol, voi vorbi despre cum să afișați întotdeauna primul element din lista derulantă.

Afișați primul element din lista derulantă în loc de gol cu ​​funcția Validare date

Afișați automat primul element din lista derulantă în loc de gol cu ​​codul VBA


săgeată albastru dreapta balon Afișați primul element din lista derulantă în loc de gol cu ​​funcția Validare date

De fapt, pentru a realiza acest job, trebuie doar să aplicați o formulă specifică atunci când creați o listă derulantă, vă rugăm să faceți următoarele:

1. Selectați celulele în care doriți să inserați lista derulantă și faceți clic pe Date > Data validarii > Data validarii, vezi captura de ecran:

doc listă derulantă implicit la top 2

2. În pop-out Data validarii caseta de dialog, sub setări cont fila, alegeți Listă de la Permite , apoi introduceți această formulă: = OFFSET (Sheet3! $ A $ 1,0,0 $, COUNTA (Sheet3! $ A: $ A) -1,1) în Sursă casetă text, vezi captura de ecran:

notițe: În această formulă, Sheet3 este foaia de lucru conține lista de date sursă și A1 este prima valoare a celulei din listă.

doc listă derulantă implicit la top 3

3. Apoi apasa OK butonul, acum, când faceți clic pe celulele din lista derulantă, primul element de date este afișat întotdeauna în partea de sus, indiferent dacă există valori ale celulei șterse la sfârșitul datelor sursă, consultați captura de ecran:

doc listă derulantă implicit la top 4


săgeată albastru dreapta balon Afișați automat primul element din lista derulantă în loc de gol cu ​​codul VBA

Aici pot introduce, de asemenea, un cod VBA care vă poate ajuta să afișați automat primul element din lista verticală atunci când faceți clic pe celulele de validare a datelor.

1. După inserarea listei derulante, selectați fila Foaie de lucru care conține lista derulantă și faceți clic dreapta pentru a alege Afișați codul din meniul contextual pentru a accesa Microsoft Visual Basic pentru aplicații , apoi copiați și lipiți următorul cod în modul:

Cod VBA: Afișează automat primul element de date în lista derulantă:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updateby Extendoffice 20160725
    Dim xFormula As String
    On Error GoTo Out:
    xFormula = Target.Cells(1).Validation.Formula1
    If Left(xFormula, 1) = "=" Then
        Target.Cells(1) = Range(Mid(xFormula, 1)).Cells(1).Value
    End If
Out:
End Sub

doc listă derulantă implicit la top 5

2. Apoi salvați și închideți fereastra de cod și acum, când faceți clic pe celula din lista derulantă, primul element de date va fi afișat simultan.


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (9)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
După ce derulați în jos, selectați la celule datele numerice care nu vin în serie, vin doar datele primei celule, selectați 1,2 celule diferite și derulați în jos valoarea nu vine 1,2,3,4,5....... vine doar valoarea primei celule 1,1,1,1,....
Acest comentariu a fost redus la minimum de moderatorul de pe site
selectați celula în care ați introdus elementul de listă
intervalul pentru elementul de listă este „Opleiding”
în codul tău VBA:

selection.Value = Range("opleiding").Cells(2, 1)

rezultatul este că elementul selectat din listItem este al doilea element din intervalul „Opleiding”
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum pot seta o listă de validare a datelor astfel încât, dacă valoarea drop-down din celulă este ștearsă, celula va afișa automat o valoare implicită (adică „-Select-”)?

De exemplu, am o foaie de lucru cu mai multe liste derulante pe care vreau să afișez o valoare implicită „-Select-” odată ce foaia este deschisă. Un utilizator va selecta valori din liste care vor afecta rezultatul calculelor pe întreaga foaie de calcul. Un utilizator poate „șterge” accidental conținutul celulei. Dacă se întâmplă acest lucru, mai degrabă decât celula să devină goală, vreau ca celula să arate o valoare implicită „-Select-”. Acest scenariu are loc în mai multe locații aleatorii de-a lungul foii de calcul, nu doar într-un singur loc localizat.

Am reușit să vin cu următorul cod VBA până acum, dar mi-am dat seama doar cum să aplic conceptul într-un interval, mai degrabă decât doar celulele care conțin o listă derulantă. Problema cu ceea ce am codificat până acum este că fiecare celulă goală din interval se termină cu „-Select-” în ea.

Opțiune explicită

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dim cel As Range
' Dacă Target.Cells.Count > 1, apoi Ieșiți din sub
Dacă nu se intersectează (țintă, interval ("f2:p17")) este nimic, atunci
Pentru fiecare cel din interval ("f2:p17")
Application.EnableEvents = Fals
If IsEmpty(cel.Value) Atunci cel.Value = "-Select-"
Următorul cel
Final, dacă
Application.EnableEvents = Adevărat
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna ziua!

Cum pot seta o listă de validare a datelor astfel încât, dacă valoarea drop-down din celulă este ștearsă, celula va afișa automat o valoare implicită (adică „-Select-”)?

De exemplu, am o foaie de lucru cu mai multe liste derulante pe care vreau să afișez o valoare implicită „-Select-” odată ce foaia este deschisă. Un utilizator va selecta valori din liste care vor afecta rezultatul calculelor pe întreaga foaie de calcul. Un utilizator poate „șterge” accidental conținutul celulelor din liste. Dacă se întâmplă acest lucru, mai degrabă decât celula să devină goală, vreau ca celula să arate o valoare implicită „-Select-”. Acest scenariu are loc în mai multe locații aleatorii de-a lungul foii de calcul, nu doar într-un singur loc localizat.

Am reușit să găsesc următorul cod VBA până acum, dar aplică conceptul doar într-un interval, mai degrabă decât doar celule individuale care conțin liste drop-down. Problema cu ceea ce am codificat până acum este că fiecare celulă goală din interval se termină cu „-Select-” în ea. Unele dintre liste sunt în intervale, dar unele sunt, de asemenea, împrăștiate în întreaga foaie. Problema pe care o întâmpin cu codul meu actual este că fiecare celulă goală din interval se termină cu „-Select-” în ea. Încerc să fac ca acest lucru să se aplice pe întreaga foaie de lucru NUMAI celulelor care sunt liste drop-down.

Este chiar posibil ceea ce încerc să realizez?

Exemplu de fișier poate fi găsit aici:
https://drive.google.com/file/d/1VoO8VgFs3IJ0ALwqfk0i8gt69UE4vEKW/view?usp=sharing

Exemplu de cod:

Opțiune explicită

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dim cel As Range
' Dacă Target.Cells.Count > 1, apoi Ieșiți din sub, 'dezactivarea acestei opțiuni permite selectarea și ștergerea mai multor celule în același timp
Dacă nu se intersectează (țintă, interval ("f2:p17")) este nimic, atunci
Pentru fiecare cel din interval ("f2:p17")
Application.EnableEvents = Fals
If IsEmpty(cel.Value) Atunci cel.Value = "-Select-"
Următorul cel
Final, dacă
Application.EnableEvents = Adevărat
End Sub


Multumesc in avans!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu merge la mine. Tot primesc un mesaj de eroare care spune: „Este o problemă cu această formulă. Nu încerc să tastați o formulă? Când primul caracter este un semn egal (+) sau minus (-), Exel crede că este o formulă.... Pentru a ocoli acest lucru, mai întâi tastați un apostrof (')..."
Acest comentariu a fost redus la minimum de moderatorul de pe site
Încă o dată, salvezi ziua! Mulțumiri!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mai bine, dar nu chiar. Folosind metoda =OFFSET(Sheet3!$A$1,0,0,COUNTA(Sheet3!$A:$A)-1,1) elimină spațiile libere, dar încă te pornește în partea de jos a listei foarte lungi. Vreau să înceapă din partea de sus a listei.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Pentru codul VDA, cum pot avea doar un anumit interval de celule să arate primul articol din lista derulantă? Vă mulțumesc anticipat.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Akrupa, Pentru a vă rezolva problema, poate următorul cod VBA vă poate ajuta:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Actualizare de Extendoffice 20211206
Dim xFormula ca șir
Dim xRg As Range
Dim xStr As String
Dim xIndex ca întreg
xIndex = 2 „Aici indică numărul de celule al datelor originale, de exemplu, datele originale sunt A1:A10, pentru a afișa valoarea celulei A2, vă rugăm să scrieți 2 aici.
La eroare GoTo Out:
xFormula = Target.Cells(1).Validation.Formula1
Dacă Left(xFormula, 1) = "=" Atunci
Dacă Target.Value <> "" Apoi Ieșiți din sub
xStr = Mid(xFormula, 2)
Set xRg = Application.Range(xStr)
Target.Cells(1) = xRg.Cells(xIndex).Valoare
Final, dacă
Out:
End Sub
Vă rugăm să încercați, sper că vă poate ajuta!
Nu există comentarii postate aici încă
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL