利用VBA ADO轉置及合併CSV

2021-10-05 15:14:59 字數 1694 閱讀 9368

sub 轉置()

transfrom 統計項 select 行欄位 from (資料來源) group by 列欄位 pivot 行欄位

set cnn = createobject("adodb.connection")

set rs = createobject("adodb.recordset")

cnn.open "provider=microsoft.ace.oledb.12.0;extended properties=excel 12.0;data source=" & thisworkbook.fullname

'sql = "transform date_id select " & worksheets("使用說明").cells(15, 2) & worksheets("使用說明").cells(15, 2) & " from [合併結果$] group by date_id pivot date_id "

sql = "transform sum(voice_erl) select date_id from [合併結果$] group by date_id pivot hour_id in (8,10)"

set rs = cnn.execute(sql) '將sql語句獲得的資料

sheets("分析").cells.clearcontents '清理儲存資料的區域

for i = 0 to rs.fields.count - 1

worksheets("分析").cells(1, i + 1) = rs.fields(i).name

next

sheets("分析").range("a2").copyfromrecordset rs

sheets("分析").range("a2:aa2").specialcells(xlcelltypeblanks).delete

rs.close

cnn.close

set rst = nothing

set cnn = nothing

end sub

sub 合併csv()

mypath = thisworkbook.path & "\"

myname = dir(mypath & "*.csv")

worksheets("合併結果").cells.clear

k = 1

do while myname <> ""

open mypath & myname for input as #1

do while not eof(1)

line input #1, txtline

r_num = split(txtline, ",")

i = i + 1

for j = 0 to ubound(r_num)

worksheets("合併結果").cells(i, j + 1) = r_num(j)

next

if i = 1 then

worksheets("合併結果").cells(i, j + 1) = "filename"

else

worksheets("合併結果").cells(i, j + 1) = myname

end if

loop

close 1#

myname = dir

loop

end sub

快速轉置及排序函式

轉置運算是一種最簡單的矩陣運算,對於乙個m n的矩陣m 1 m 10000,1 n 10000 它的轉置矩陣t是乙個n m的矩陣,且t i j m j i 顯然,乙個稀疏矩陣的轉置仍然是稀疏矩陣。你的任務是對給定乙個m n的稀疏矩陣 m n 10000 求該矩陣的轉置矩陣並輸出。矩陣m和轉置後的矩陣...

python 利用zip 函式進行矩陣轉置

本文介紹如何利用python的內建函式zip 計算矩陣的轉置 1 zip 函式介紹 zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。例如 a...

C 利用動態陣列求矩陣轉置

利用c 動態陣列求矩陣轉置問題中,現存的解答存在很多待解決的問題,比如無法讓使用者自定義陣列的大小,只能計算方陣的轉置等。我用一種更加容易理解的方式將矩陣轉置問題編寫了出來,初來乍到,有什麼錯誤還請大家指正。廢話少說,上 include using namespace std static int ...