求excel的vba語句,謝謝,線上等!在excel裡vba裡,通過sql語句實現多列結果求和,謝謝大神!

2022-08-21 11:22:23 字數 6307 閱讀 7046

1樓:匿名使用者

sub 填充**()

set isheet = worksheets("sheet1")

set osheet = worksheets("sheet2")

for k = 3 to osheet.usedrange.rows.count + 1

for i = 6 to 15

if isheet.cells(3, i).value = osheet.cells(k, 3).value then

k_i = i

exit for

end if

next

for j = 8 to 22

if isheet.cells(j, 3).value = osheet.cells(k, 2).value then

k_j = j

exit for

end if

next

osheet.cells(k, 4).value = isheet.cells(j, i)

next

end sub

2樓:陽光上的橋

**:option explicit

sub x()

dim p

dim arr, i, j

set p = createobject("scripting.dictionary")

'從sheet1表資料生成字典p

arr = sheets("sheet2").usedrange

for i = 8 to ubound(arr)

for j = 6 to ubound(arr, 2)

p(arr(i, 3) & vbtab & arr(3, j)) = arr(i, j)

next j

next i

'使用字典p的示例:sheet1!d3:d7填寫

with sheets("sheet1")

for i = 3 to 7

.cells(i, 4) = p(.cells(i, 2) & vbtab & .cells(i, 3))

next i

end with

end sub

上面的**可以獨立執行,但只是一個示例,你可能需要修改,或者複製到你的**之中。

3樓:匿名使用者

這裡拋磚引玉,歡迎大神們提出更簡單的思路

option explicit

sub test()

dim rng1 as range, rng2 as range

dim xrow as integer, xcolumn as integer, i as integer

set rng1 = worksheets(2).range("c8:c22")

set rng2 = worksheets(2).range("f3:o3")

i = 3

with worksheets(1)

do while range("b" & i) <> ""

xrow = rng1.find(.range("b" & i)).row

xcolumn = rng2.find(.range("c" & i)).column

worksheets(1).range("d" & i) = worksheets(2).cells(xrow, xcolumn)

i = i + 1

loop

end with

end sub

4樓:q憶往夕

…………謝謝,好的,嗯嗯,88

5樓:匿名使用者

物流運費計算的啊,這個我擅長

求excel的vba語句,包含判斷和迴圈

6樓:萬年金剛鑽

貌似有兩個問題:

暫定的sheet1和sheet2,相同欄位是哪個?比如說是機臺?

班數的1,2,3,……8……12……怎麼對應到二(早)、二(晚)、三(早)、三(晚)……或者,只要依次填充滿班數即可?

看資料的第二列【機臺】,有兩個「光-5」,是不是資料有誤?如果不是有誤那該如何處理?

單號列之間的空白行建議去除(主要是由於實際工作中單號的數量是可變的,空行作為重要的結束標誌,vba可以用於判斷是否搜尋完畢。否則就要在vba或者某個單元格指定搜尋區域的高度,對於使用者而言增加了操作步驟,而資料本身也降低了規範性)

7樓:匿名使用者

這個問題不會vba,用函式就可解決。

假定原資料在sheet1的abc三列,排班在sheet2從a列開始

b3=if(column(a1)<=vlookup($a3,sheet1!$b:$c,2,),vlookup($a3,if(,sheet1!

$a$1:$a$100,sheet1!$b$1:

$b$100),2,),"")  右拉填充,下拉填充

**等!在excel裡vba裡,通過sql語句實現多列結果求和,謝謝大神!

8樓:銷香葉雨

vba裡面不一定要用sql呀?

sql中的求和函式sum( )用於對資料求和,返回選取結果集中所有值的專總和。語法屬

如下:select          sum(column_name)

from            table_name

單列求和

select sum(column_name) from table_name where xx='……'"

單列條件求和

teacher表中查詢年齡大於40歲的教師的工資總數。例項**:

select sum(olumn_name) as oldsal

from     teacher

where   age>=40

多列求和

select sum(olumn_name) from table_name

where xx in ('一', '二', '三')

group by xx

去重複求和

select sum(k.b) from(select distinct a,b from test) k

請高手指點:excel vba中with的語法和用法??

9樓:匿名使用者

我學習過的教程摘錄一段:

在一個單一物件或一個使用者定義型別上執行一系列的語句。

語法with object

[statements]

end with

with 語句的語法具有以下幾個部分:

部分 描述

object 必要引數。一個物件或使用者自定義型別的名稱。

statements 可選引數。要執行在 object 上的一條或多條語句。

說明with 語句可以對某個物件執行一系列的語句,而不用重複指出物件的名稱。例如,要改變一個物件的多個屬性,可以在 with 控制結構中加上屬性的賦值語句,這時候只是引用物件一次而不是在每個屬性賦值時都要引用它。下面的例子顯示瞭如何使用 with 語句來給同一個物件的幾個屬性賦值。

with mylabel

.height = 2000

.width = 2000

.caption = "this is mylabel"

end with

注意 當程式一旦進入 with 塊,object 就不能改變。因此不能用一個 with 語句來設定多個不同的物件。

可以將一個 with 塊放在另一個之中,而產生巢狀的 with 語句。但是,由於外層 with 塊成員會在內層的 with 塊中被遮蔽住,所以必須在內層的 with 塊中,使用完整的物件引用來指出在外層的 with 塊中的物件成員。

重點 一般來說,建議您不要跳入或跳出 with 塊。如果在 with 塊中的語句被執行,但是 with 或 end with 語句並沒有執行,則一個包含對該物件引用的臨時變數將保留在記憶體中,直到您退出該過程。。

with 語句示例

本示例使用 with 語句對某單一物件執行一系列的語句。myobject 物件及其屬性均為示範目的而採用了通用名稱。

with myobject

.height = 100 ' 和 myobject.height 一樣等於 100 。

.caption = "hello world" ' 和 myobject.caption 一樣等於 "hello world" 。

with .font

.color = red ' 和 myobject.font.color 一樣等於 red。

.bold = true ' 和 myobject.font.bold 一樣等於 true 。

end with

end with

祝你成功!

10樓:匿名使用者

with

end with

只不過就是讓你在呼叫這個表的屬性時用.就可以了。一種省略的方法。

11樓:匿名使用者

例如:with sheet1

.range("a1")=...

.name=...

end with

求excel用vba的if條件語句與for迴圈語句的基本語法,不要複製貼上,要最簡單說明下就行了

12樓:陽光上的橋

最簡單的來兩句,不明白請追問~~~

for的用法是這樣的:

for i=1 to n

......語句......

next i

這樣的功能是,使裡面的 語句 執行n次,每次i的值都不同,分別是1~n,用來完成固定次數的重複。

if的用法是這樣的:

if 條件 then

.......語句1.......

else

......語句2......

end if

這樣的功能是判斷條件是否滿足,如果滿足就執行 語句1,否則執行 語句2

以上例子中的語句、語句1、語句2都可以是一個或者多個語句,往往是一段。

13樓:匿名使用者

if語句有兩種用法,語句式和塊式:

語句式:

if 條件 then 條件為真的執行結果 [else 條件為假時的執行結果]

'號中間的可以視情況省略

如:if range("a1")=1 then range("b1")=range("a1")+100 else range("b1")=range("a1")-50

意思就是:如果a1為1時,b1=a1+100,否則,b1=a1-50

語句式使用時,中間不能有回車符號,但可以使用 _(即:空格+_+回車),如上可以寫成:

if range("a1")=1 then range("b1")=range("a1")+100 _

else range("b1")=range("a1")-50

塊式:if   條件  then

條件為真時執行的語句(可以多行)

[else

條件為假時執行的語句(可以多行)]

end if

'用括起來的,如果沒有,可以省略,但塊式,必須if。。。。then 。。。。end if 匹配,否則,將出現語法錯誤。

塊式還有一種用法:

if  條件1 then

條件1為真時執行的語句

elseif 條件2 then

條件2為真時執行的語句

elseif 條件3 then

條件3為真時執行的語句

……else

上述條件均不具備時,執行的語句

end if

尤其要注意的是,採用塊式後一種,各條件之間必須是相同專案的比較,並且條件之間的邏輯必須閉合,否則就可能會出現計算錯誤。

if 還有一種函式方式的用法:

iif(條件,為真時返回的結果,為假時返回的結果)

'用法與工作表函式if()一樣。

for的語法:

for 自定義變數=初始值 to 終止值 [step 步長]

自定義變數每增加(或減少)一個步長要執行的語句(可以多句)

[exit for]

next

如果初始值《終止值,且步長為1,則step 步長可以省略

步長可以是正數(初始值必須小於等於終止值),或者負數(起始值必須大於等於終止值)

eixt for 表示可以根據執行結果隨時退出迴圈。

for。。。。next必須配對使用,不能簡化

一般地,for ....next 和 if語句組合使用

求幫忙excel裡面的vba呼叫

dim sht as worksheet for each sht in worksheetsif sht.name 新工作表 then固定列.copy 例如a列 則把 固定列 改成 sht.columns a a sheets 新工作表 columns 列 insert shift xltorig...

excel如何抽取同樣列名的資料,用VBA程式設計也可以,高分,急

點尺度欄,可選中整列,然後點選資料 篩選 自動篩選,中會出現倒三角標記,點選下拉,選擇排序即可。方便的話發到 chengyan420 126.com 例如 range rows 3 rows 5 insert shift xldown excel 如何 用 vba 根據第一行的列名獲取整列,並做相關...

excel用VBA寫從1加到100的程式

你好,很高興為你回答這個問題。樓上的回答也很好,這裡我提供另一種思路,各位大佬自行比較。sub fillingexample dim i for i 1 to 100 cells i,1 value 1 i 2 i next end sub sub sumexample dim i dim resu...