A. excel根據條件返回對應的值比如
在Excel中,有多個用於查詢的函數,可以非常方便地查詢需要的數據,但是卻沒有一個類似countifs多條件計數函數、sumifs多條件求和函數一樣的,專門用於多條件查詢的函數。但是,我們卻可以利用lookup函數來實現多條件查詢的功能。
lookup函數有兩種使用方式,一種是從單行或單列中查找數據,這種方式叫做向量形式,另一種是從多行多列組成的一個區域中查找數據,叫做數組形式。在實際使用過程中一般都不使用數組形式,而多用 VLOOKUP 或 HLOOKUP來實現區域查找。提供數組形式是為了與其他電子表格程序兼容,這種形式的功能有限。故這種方式本節不予分析,主要來和大家探討一下從單行或單列中查找數據的這種形式。
先來看看基礎語法:
lookup(查找值,查找范圍區域,返回值區域)
查找范圍區域和返回值區域都必須是單行或單列的區域,且大小必須相同。
如果 LOOKUP 函數找不到「查找值」,則該函數會在查找范圍區域中小於或等於「查找值」的最大值進行匹配。如果「查找值」 小於 查找范圍區域中的最小值,則 LOOKUP 會返回 #N/A 錯誤值。
來看看一則基礎實例:
以下是商店銷售目標達成情況表,需要查找商店3的達成率。
在B13單元格中輸入公式:
=LOOKUP(B12,B2:B10,E2:E10)
來看看公式實現的過程,查找的值是B12單元格(商店3),查找的范圍是B2:B10(商店名稱列),返回值區域是E2:E10(達成率列)。首先,它先再商店名稱列中查找商店3,當它找到之後,它就會記住其所在行的位置,然後再去找到達成率列中對應行位置的值(也就是83%)
理解了lookup基礎用法,我們再來看如何實現多條件查詢。
語法:lookup(1,1/((條件區域1=條件1)*(條件區域2=條件2)),返回值區域)
查找的值:1
查找的范圍:1/((條件區域1=條件1)*(條件區域2=條件2))
返回值區域:設定返回值列,
條件可以繼續增加,但是一組條件用小括弧括起來,各條件之間用「*」連接起來,且條件整體也需要用括弧括起來。
下圖是商店品類銷售表,查找商店2休閑褲的銷售金額
在B12單元格中輸入公式:
=LOOKUP(1,1/((A2:A7=B10)*(B2:B7=B11)),C2:C7)
以上就是多條件查詢的方法。在實際工作中,總有人會有疑問。為什麼查找值要寫成1,查找范圍要寫成「1/((條件區域1=條件1)*(條件區域2=條件2))」這種形式?
下面我就用上面的實例來解釋一下:
條件1:A2:A7=B10 就是在商品名稱列查找商店3。條件2:B2:B7=B11 就是在品類列中查找休閑褲。在公式的計算過程中,如果它找到了對應的值就用1表示,如果不是就用0表示,兩組條件就得出了兩組數,這是第一步。第二步兩組數相乘就得到了新的一組數。第三步,1除以這組數,因為分母不能為0,1/0就會變成錯誤值,這樣就剔除了不符合條件的值,保留符合條件的值.。第四步,再在這組數中查找1, 通過找到1所在的位置,找到對應的返回值區域的值。
通過了解公式的計算過程,你就明白了為什麼查找值要寫成1,查找范圍要寫成「1/((條件區域1=條件1)*(條件區域2=條件2))」這種形式啦
B. 什麼是返回值
就是每一個函數都有一個值,用以前學過的數學函數y=2x來說吧,y是函數值,在編程語言中,這個y就是返回值,運行函數體內的語句後使用return命令就可以賦給函數返回值,沒有返回值的函數通常稱作過程,此種函數的返回值類型為void
C. c語言返回值具體是指什麼
子函數的返回值,main主函數也是有返回值的,但是一般用不到都忽略掉了,一般來說的返回值就是子函數的返回值。當需要一個函數去處理數據時,如求平方,這時候求平方後的值可以有兩種方法表達
1、以值的形式返回給你,即return x,這樣就可以利用這個結果了,此時函數名前當然要加返回的數據類型了
2、當不需要對這一結果進一步處理時,直接printf,這樣可以直接在終端上顯示結果了,這時就沒必要去加了,直接VOID
(3)返回指標擴展閱讀
void:聲明函數無返回值或無參數,聲明無類型指針,顯示丟棄運算結果。(C89標准新增)
如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 * 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。
指針不僅可以是變數的地址,還可以是數組、數組元素、函數的地址。通過指針作為形式參數可以在函數的調用過程得到一個以上的返回值,不同於return(z)這樣的僅能得到一個返回值。
D. 在JAVA里 什麼叫返回 什麼叫返回值
Java中一個方法如果定義了返回值,就會在函數的最後加上return語句,用來返回數據,提供給別的方法使用:
這個就是面向對象了,定義了一個類,可以把它理解成其他普通的數據類型一樣,返回值可以是普通的數據類型,如int,char等,當然也可以是自己定義的數據類型,也就是你所說的類名,它返回的是這個類對應的一個對象。
E. C語言中返回值
首先,C語言中的函數有兩種形式:1)有返回值,2)無返回值。有返回值的函數會把執行的結果(也就是你寫這個函數的目的)返回到主函數中。沒有返回值的函數主要是為了完成某種任務(其實這是廢話,函數的功能就是為了完成某種任務。)而一般沒有任何值返回到主函數中(也可以通過在無返回值的函數中操作全局變數來改變主函數中的變數的值)。函數聲明的方式是:
Type FunctionName(type argument1,type argument2....type argumentn)
{
//函數體
}
type 可以為任意的C語言中的數據類型。也可以為VOID(即無返回值)。
其次,main函數的前面可以為int也可以為void.因為main函數也是函數(廢話)。當這個函數執行完畢之後會返回給系統一個值,0表示正確(常)執行。如果你寫void的話,編譯調試的時候,編譯器會自動像系統返回一個值。
第三,在寫C++程序的時候一般寫:
int main()
{
....
....
return 0;
}
F. 返回的值是什麼
session.getAttribute()方法是有參數的
是一個字元串 這個Attribute 其實是一個map 這個字元串是鍵 返回這個鍵對應的值
G. 返回指標
這個可以問老一輩子的人
H. 什麼是函數返回值
函數返回值就是你所調用的函數返回給你的值。比如說void fun(int n,int m);前面的void就說明這個函數是沒返回值的。比如int fun(int m);時,這個函數執行以後要返回一個整型數。
I. 什麼是返回值返回值是用來做什麼的
說來話長。
c語言中,首先,返回值是函數的返回值;然後,函數的函數名被作為一個變數處理;最後,函數的處理結果數據帶回給調用函數作為返回值就被值賦給了(函數名)變數的。
這個返回值可以用來判斷函數被調用後的運行處理結果,函數細致的返回值可以判斷出在被調用中的走向流程。
返回值可有可無。
J. c語言中,返回值是什麼意思
在一個函數定義中,函數體之前的所有部分稱為函數頭,它給出了該函數的返回類型、每個參數的次序和類型等函數原型信息,所以當沒有專門給出函數原型說明語句時,系統就從函數頭中獲取函數原型信息。
一個函數的原型語句就是其函數頭的一個拷貝,當然要在最後加上語句接上結束符分號。函數原型語句與函數頭也有細微的差別,在函數原型語句中,其參數表中的每個參數允許只保留參數類型,而省略參數名,並且若使用參數名也允許與函數頭中對應的參數名不同。
全文如下:
一)、定義格式
<類型名>
<函數名>
([<參數表>])
<函數體>
<類型名>為系統或用戶已定義的一種數據類型,它是函數執行過程中通過return語句要求返回的值的類型,又稱為該函數的類型。當一個函數不需要通過return語句返回一個值時,稱為無返回值函數或無類型函數,此時需要使用保留字void作為類型名。當類型名為int時,可以省略不寫,但為了清楚起見,還是寫明為好。
<函數名>是用戶為函數所起的名字,它是一個標識符,應符合C++標識符的一般命名規則,用戶通過使用這個函數名和實參表可以調用該函數。
<參數表>又稱形式參數表,它包含有任意多個(含0個,即沒有)參數說明項,當多於一個時其前後兩個參數說明項之間必須用逗號分開。每個參數說明項由一種已定義的數據類型和一個變數標識符組成,該變數標識符成為該函數的形式參數,簡稱形參,形參前面給出的數據類型稱為該形參的類型。一個函數定義中的<參數表>可以被省略,表明該函數為無參函數,若<參數表>用void取代,則也表明是無參函數,若<參數表>不為空,同時又不是保留字void,則稱為帶參函數。
<函數體>是一條復合語句,它以左花括弧開始,到右花括弧結束,中間為一條或若干條C++語句。
在一個函數的參數表中,每個參數可以為任一種數據類型,包括普通類型、指針類型、數組類型、引用類型等,一個函數的返回值可以是除數組類型之外的任何類型,包括普通類型、指針類型和引用類型等。另外,當不需要返回值時,應把函數定義為void類型。
二)、定義格式舉例
(1)
void
f1()
(2)
void
f2(int
x)
(3)
int
f3(int
x,int*
p)
(4)
char*
f4(char
a[])
(5)
int
f5(int&
x,double
d)
(6)
int&
f6(int
b[10],
int
n)
(7)
void
f7(float
c[][N],
int
m,
float&
max)
(8)
bool
f8(ElemType*&
bt,
ElemType&
item)
在第一條函數定義中,函數名為f1,函數類型為void,參數表為空,此函數是一個無參無類型函數。若在f1後面的圓括弧內寫入保留字void,也表示為無參函數。
在第二條函數定義中,僅帶有一個類型為int的形參變數x,該函數沒有返回值。
在第三條函數定義中,函數名為f3,函數類型為int,函數參數為x和p,其中x為int型普通參數,p為int*型指針參數。
在第四條函數定義中,函數名為f4,函數類型為char*,即字元指針類型,參數表中包含一個一維字元數組參數。注意:在定義任何類型的一維數組參數時,不需要給出維的尺寸,當然給出也是允許的,但沒有任何意義。
在第五條函數定義中,函數名為f5,返回類型為int,該函數帶有兩個形參,一個為
整型引用變數x,另一個為雙精度變數d。
在第六條函數定義中,函數名為f6,函數類型為int&,即整型引用,該函數帶有兩個形參,一個是整型數組b,另一個是整型變數n。在這里定義形參數組b所給出的維的尺寸10可以被省略。
在第七條函數定義中,函數名為f7,無函數類型,參數表中包含三個參數,一個為二維單精度型數組c,第二個為整型變數m,第三個為單精度引用變數max。注意:當定義一個二維數組參數時,第二維的尺寸必須給出,並且必須是一個常量表達式,第一維尺寸可給出也可不給出,其作用相同。
在第八條函數定義中,函數名為f8,返回類型為bool,即邏輯類型,該函數帶有兩個參數,一個為形參bt,它為ElemType的指針引用類型,另一個為形參item,它是ElemType的引用類型,其中ElemType為一種用戶定義的類型或是通過typedef語句定義的一個類型的別名。
三)、有關函數定義的幾點說明
1.
函數原型語句
在一個函數定義中,函數體之前的所有部分稱為函數頭,它給出了該函數的返回類型、每個參數的次序和類型等函數原型信息,所以當沒有專門給出函數原型說明語句時,系統就從函數頭中獲取函數原型信息。
一個函數必須先定義或聲明而後才能被調用,否則編譯程序無法判斷該調用的正確性。一個函數的聲明是通過使用一條函數原型語句實現的,當然使用多條相同的原型語句聲明同一個函數雖然多餘但也是允許的,編譯時不會出現錯誤。
在一個完整的程序中,函數的定義和函數的調用可以在同一個程序文件中,也可以處在不同的程序文件中,但必須確保函數原型語句與函數調用表達式出現在同一個文件中,並且函數原型語句出現在前,函數的調用出現在後。
通常把一個程序中用戶定義的所有函數的原型語句組織在一起,構成一個頭文件,讓該程序中所含的每個程序文件的開始(即所有函數定義之前)包含這個頭文件(通過#include命令實現),這樣不管每個函數的定義在哪裡出現,都能夠確保函數先聲明後使用(即調用)這一原則的實現。
一個函數的原型語句就是其函數頭的一個拷貝,當然要在最後加上語句接上結束符分號。函數原型語句與函數頭也有細微的差別,在函數原型語句中,其參數表中的每個參數允許只保留參數類型,而省略參數名,並且若使用參數名也允許與函數頭中對應的參數名不同。
2.
常量形參
在定義一個函數時,若只允許函數體訪問一個形參的值,不允許修改它的值,則應把該形參說明為常量,這只要在形參說明的前面加上const保留字進行修飾即可。如:
void
f9(const
int&
x,
const
char&
y);
void
f10(const
char*
p,
char
key);
在函數f9的函數體中只允許使用x和y的值,不允許修改它們的值。在函數f10的函數體中只允許使用p所指向的字元對象或字元數組對象的值,不允許修改它們的值,但在函數體中既允許使用也允許修改形參key的值。
3.
預設參數
在一個函數定義中,可根據需要對參數表末尾的一個或連續若干個參數給出預設值,當調用這個函數時,若實參表中沒有給出對應的實參,則形參將採用這個預設值。如:
void
f11(int
x,
int
y=0)
int
f12(int
a[],
char
op='+',
int
k=10)
函數f11的定義帶有兩個參數,分別為整型變數x和y,並且y帶有預設值0,若調用該函數的表達式為f11(a,b),將把a的值賦給x,把b的值賦給y,接著執行函數體;若調用該函數的表達式為f11(a+b),則也是正確的調用格式,它將把a+b的值賦給x,因y沒有對應的實參,將採用預設值0,參數傳送後接著執行函數體。
函數f12的定義帶有三個參數,其中後兩個帶有預設值,所以調用它的函數格式有三種,一種只帶一個實參,用於向形參a傳送數據,後兩個形參採用預設值,第二種帶有兩個實參,用於分別向形參a和op傳送數據,第三個形參採用預設值,第三種帶有三個實參,分別用於傳送給三個形參。
若一個函數帶有專門的函數原型語句,則形參的預設值只能在該函數原型語句中給出,不允許在函數頭中給出。如對於上述的f11和f12函數,其對應的函數原型語句分別為:
void
f11(int
x,
int
y=0);
int
f12(int
a[],
char
op='+',
int
k=10);
函數定義應分別改寫為:
void
f11(int
x,
int
y)
int
f12(int
a[],
char
op,
int
k)
4.
數組參數
在函數定義中的每個數組參數實際上是指向元素類型的指針參數。對於一維數組參數說明:
<數據類型>
<數組名>[]
它與下面的指針參數說明完全等價:
<數據類型>
*<指針變數名>
其中<指針變數名>就是數組參數說明中的<數組名>。如對於f12函數定義中的數組參數說明int
a[],等價於指針參數說明int*
a。也就是說,數組參數說明中的數組名a是一個類型為int*的形參。注意:在變數定義語句中定義的數組,其數組名代表的是一個數組,它的值是指向第一個元素的指針常量,這與數組形參的含義有區別。
對於二維數組參數說明:
<數據類型>
<參數名>[][<第二維尺寸>]
它與下面的指針參數說明完全等價:
<數據類型>
(*<參數名>)[<第二維尺寸>]
如對於f7函數定義中的二維數組參數說明float
c[][N],等價於指針參數說明float(*c)[N]。
5.
函數類型
當調用一個函數時就執行一遍循環體,對於類型為非void的函數,函數體中至少必須帶有一條return語句,並且每條return語句必須帶有一個表達式,當執行到任一條return語句時,將計算出它的表達式的值,結束整個函數的調用過程,把這個值作為所求的函數值帶回到調用位置,參與相應的運算;對於類型為void的函數,它不需要返回任何函數值,所以在函數體中既可以使用return語句,也可以不使用,對於使用的每條return語句不允許也不需要帶有表達式,當執行到任一條return語句時,或執行到函數體最後結束位置時,將結束函數的調用過程,返回到調用位置向下繼續執行。
6.
內聯函數
當在一個函數的定義或聲明前加上關鍵字inline則就把該函數聲明為內聯函數。計算機在執行一般函數的調用時,無論該函數多麼簡單或復雜,都要經過參數傳遞、執行函數體和返回等操作。若把一個函數聲明為內聯函數後,在程序編譯階段系統就有可能把所有調用該函數的地方都直接替換為該函數的執行代碼,由此省去函數調用時的參數傳遞和返回操作,從而加快整個程序的執行速度。通常可把一些相對簡單的函數聲明為內聯函數,對於較復雜的函數則不應聲明為內聯函數。從用戶的角度看,調用內聯函數和一般函數沒有任何區別。下面就是一個內聯函數定義的例子,它返回形參值的立方。
inline
int
cube(int
n)
{
return
n*n*n;
}
如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!
Vae團隊招人!!!歡迎各位加入!!!走過路過不要錯過!!!迅猛發展中!!!