excel用vba自動提取多個檔案中指定位置多個字元到excel指定單元格中

2021-06-26 11:19:06 字數 2125 閱讀 1415

1樓:復仇之牙

19:44開始解答這個問題,那時你還沒有上傳附件,試試能不能用吧

sub 批量提取txt檔案指定位置資料()

dim fso as object, ofile as object

dim tx, tx0, txk as string

dim r1, r2 as integer

r1 = 2 '從第2行開始寫入

'將需寫入資料的列轉換為文字格式,防止0開頭的數字資料寫入錯誤

[a:a].numberformatlocal = "@"

[c:c].numberformatlocal = "@"

[e:e].numberformatlocal = "@"

[g:g].numberformatlocal = "@"

[k:k].numberformatlocal = "@"

set fso = createobject("scripting.filesystemobject") '引用fso物件

for each ofile in fso.getfolder(thisworkbook.path & "\資料來源\").files '遍歷當前工作簿路徑下的資料來源資料夾內所有檔案

if ofile.name like "*.txt" then '如果拓展名為txt

r2 = 1

open ofile for input as #1 '讀取檔案

do while not eof(1) '遍歷行至檔案尾

line input #1, tx '輸出行為字串

if len(trim(tx)) > 0 then '如果非空個字元大於0

if r2 = 1 then

cells(r1, "a").value = mid(tx, 2, 2) '第一行的第2-3個字元放到a列

txk = mid(tx, 2, 2) 'txk用於取k列資料

end if

if r2 = 2 then

cells(r1, "c").value = left(right(tx, 7), 3) '第二行從右往左取7個字元,再取前3個,放到c列

txk = txk & left(right(tx, 7), 3) 'txk用於取k列資料

end if

if r2 = 3 then cells(r1, "e").value = mid(tx, worksheetfunction.find("abcdef", tx) + 8, 4) '第三行找到abcdef的起始位置,從a向後數8個字元開始取,取4個

if left(tx, 6) = "hijklm" then cells(r1, "g").value = left(right(tx0, 6), 4) '某一行是hijklm開頭的,該行的上一行資料從右往左取6個字元,再取前4個,放到g列

if left(tx, len(txk)) = txk then cells(r1, "k").value = mid(tx, 6, 6) '某一行是提取之後的a2&c2中的資料開頭的,第6-11個字元放到k2單元格

tx0 = tx '將此行字元存入臨時變數作為上一行

end if

r2 = r2 + 1

loop

close #1

end if

r1 = r1 + 1

next ofile

set fso = nothing

end sub

gif**

要提取的txt檔案的截圖

2樓:匿名使用者

這東西只有拿到實際檔案,分析資料,才能編寫**正確取到需要的資料,光描述是說不清楚的。

如何通過excel邊寫vba批量提取指定資料夾下所有*.txt檔案中指定行列的資料並寫入指定sheet中的指定單元格

3樓:匿名使用者

提供具體要求可以 收費處理 [email protected]

4樓:銷香葉雨

建議上傳一些測試資料

把你的要求簡要說明白

5樓:匿名使用者

沒有財富怎麼幫你。。。

6樓:

發檔案來才能寫**的

excel用vba巨集中用for迴圈將一列滿足條件的後面加上需要的數值比如

直接寫個公式就可以了。假如你那個1在的列是b,在c裡寫公式if b1 1,a 空 然後填充就可以了。如果一定要用vba,那就讀出來單元格的內容,然後根據內容填充就可以了。 姓王的 sub aaa for i 1 to range a65536 end xlup row if cells i,1 張 ...

excel如何自動提取銷售量最大的前10名人員名單?難點是有銷售量相同的

用large if啊 假設上面四列資料分別在abcd列,且銷售額為數值 沒有單位的 那麼在e2輸入 if b2 large 銷售額資料區記得加 絕對引用,10 a2,下拖填充就行了,然後將e列複製,選擇性貼上,排序,就得到前10的姓名 按照銷售額排序不就完了 excel怎樣從100名中篩選出前10名...

EXCEL用掃瞄槍如何自動換行,EXCEL用掃瞄槍如何自動換行

1 首先我們需要開啟excel 2 如圖,可以看到 資料預設是不換行的,這樣資料就會超出單元格範圍。這一點很重要。3 接著我們選中要換行的單元格,然後點選開始選單下的 自動換行 按鈕。4 這樣,當資料超出單元格範圍的時候,就會自動換行,不會超出了。方法很簡單。你這個兩列單元格跳動估計比較難實現,我想...