Det finns flera sätt att identifiera om en Excel -cell innehåller ett nummer som direkt anges i motsats till ett nummer som härrör från en formel:
1. Använda funktioner "isnumber" och "isformula":
Detta är den mest enkla och pålitliga metoden. Kombinera dessa funktioner för att kontrollera båda villkoren:
* `isNumber (A1)`: Denna funktion returnerar "True" om cell A1 innehåller ett nummer (antingen direkt inmatad eller resultatet av en formel som utvärderar till ett nummer) och "falsk" annars.
* `isformula (a1)`: Denna funktion returnerar "True" om cell A1 innehåller en formel och "falsk" annars.
För att kontrollera om en cell innehåller ett * direkt angivet * nummer, behöver du båda "isnumber" för att vara "sant" och "isformula" för att vara "falsk":
`` `Excel
=Och (isNumber (A1), inte (isformula (A1))))
`` `
Denna formel kommer att returnera "True" endast om cell A1 innehåller ett nummer som skrivs direkt i cellen, inte beräknat med en formel. Placera denna formel i en annan cell och ersätta `A1 'med den cell du vill kontrollera.
2. Använda funktionen "cell" (mindre pålitlig):
Funktionen "Cell" kan ge information om en cells formatering och innehåll. Det är emellertid mindre tillförlitligt för denna specifika uppgift eftersom den kanske inte alltid skiljer sig exakt mellan ett direkt angivet nummer och en formel som resulterar i ett nummer:
`` `Excel
=If (cell ("typ", a1) ="v", sant, falsk)
`` `
Detta kontrollerar om celltypen är "V" (värde), som * kan * ange ett direkt angivet nummer. Men en formel som utvärderas till ett nummer skulle också returnera "V", så den här metoden är inte idiotsäker.
3. VBA Macro (för mer komplexa scenarier):
För mer komplexa behov eller storskalig analys ger ett VBA-makro större flexibilitet. Du kan iterera genom celler och undersöka deras egenskaper för att avgöra om de är formler eller direkt angivna siffror. Detta är mer avancerat men ger dig exakt kontroll. Här är ett enkelt exempel:
`` VBA
Sub checkcelltype ()
Dim cell som intervall
För varje cell inom räckvidd ("A1:A10") 'Justera intervallet efter behov
Om isnumeric (cell.value) och inte cell.hasformel då
Debug.Print Cell.Address &"Innehåller ett direkt angivet nummer."
Slut om
Nästa cell
Slutsub
`` `
Denna makro slingrar genom celler A1 till A10. `IsNumeric` kontrollerar för ett nummer, och` cell.hasformel` verifierar om det är en formel. Resultatet skrivs ut i det närmaste fönstret (Visa> Omedelbart fönster).
`och (IsNumber (A1), inte (isformula (A1)))` -metoden är den mest pålitliga och rekommenderade metoden för att bestämma om en cell innehåller ett direkt angivet nummer i Excel. De andra metoderna tillhandahålls för fullständighet men har begränsningar.