1樓:流雲行水
不是" 用mid函式很佔記憶體" 的問題,而是excel中行數很多的時候計算字元比較慢,如果先將單元格資料賦值給一個二維陣列,再在陣列(記憶體)中處理,速度將有成非常非常大的提升,我以前處理過類似問題,效果震撼。你可以試一下,如果不錯,要加分哦!!
private sub commandbutton1_click()
dim cellarr '定義一個二維陣列
dim c1 '要處理資料所在列
dim rows as double '資料總行數
c1 = 3 '假設資料存放在第三列,請在第四列留空,用於放置處理好的資料!!
rows = 20000 '假設是2萬行,多少自己改
cellarr = sheet1.range(sheet1.cells(1, c1), sheet1.cells(rows, c1 + 1)) '將兩列的資料賦值給陣列
for i = 1 to rows '在記憶體中對陣列進行操作
cellarr(i, 2) = mid(cellarr(i, 1), 5, 4) '按你的要求轉換
next i
'將轉換結果重新賦值給單元格!可能很快完成!!!!!!!!!!!!
sheet1.range(sheet1.cells(1, c1), sheet1.cells(rows, c1 + 1)) = cellarr
end sub
2樓:香格里拉稻草人
sub abc()
dim arr, brr(), crr, r%, rr%arr = range("c1:c" & [c65536].end(3).row)
redim preserve brr(1 to ubound(arr), 1 to 1)
for i = 1 to ubound(arr)brr(i, 1) = mid(arr(i, 1), 5, 4)next
[c1].resize(ubound(brr), 1) = brrend sub
這個需用陣列在記憶體中運算,應該很快的,我是03版3萬多行不會超過1秒。
3樓:匿名使用者
columns("c:c").texttocolumns datatype:=xlfixedwidth, _
fieldinfo:=array(array(0, 1), array(4, 1), array(8, 1)), _
trailingminusnumbers:=true
4樓:匿名使用者
那就編寫一段很小的**。
你的資料是字元型別的還是數值型別的?
資料有幾萬行啊?
是什麼版本的excel?
從c列取,取出來放在什麼列?
excel中如何提取某個單元格從第n個字元開始的內容?
5樓:匿名使用者
用mid函式
mid(text,start_num,num_chars)其中,text 是指單元格中的文字(字元型)start_num 指定提取的開始位置(數值型)num_chars 指提取的長度(數值型)電腦/數碼 -> 軟體 從第8開始提取,取值長度為2
6樓:匿名使用者
可使用 選單》資料》分列 解決之
方法一: 選單》資料》分列》固定寬度(適用於等長資料)>>下一步》點選你想要分列的位置, (雙擊可取消不需要的分列位置)>>完成
方法二: 選單》資料》分列》分隔符號(適用於有特定識別符號的資料.比如此案有有一特定的 ">" 號》下一步》分隔符合:其它, 鍵入 ">" 號》完成
7樓:
雖然不太明白你的意思,但我覺得只要選擇複製並貼上就行了吧
8樓:
使用mid函式提取
主要功能:從一個文字字串的指定位置開始,擷取指定數目的字元。
使用格式:mid(text,start_num,num_chars)引數說明:text代表一個文字字串;start_num表示指定的起始位置;num_chars表示要擷取的數目。
9樓:無限公司
=right(10)
excel 用vba提取資料
10樓:綠衣人敲門
1、漢字在前,數字在後面的情形。可以用mid,min, find三個函式來實現提取裡面的數字。如圖:
在b2輸入「=mid(a1,min(find(,a1&「0123456789」)),20)」
2 、把單元格里面所有的數字都提出來。可以使用巨集。先開啟vba編輯器。工具——巨集——visual basic 編輯器
function zzsz(xstr as string) as stringdim i as integerfor i = 1 to len(xstr)if isnumeric(mid(xstr, i, 1)) then zzsz = zzsz & mid(xstr, i, 1)nextend function
4、回到工作表,在b2單元格那裡輸入「=zzsz(a2)」。就可以用vba把a2單元格里所有的數字都提取出來了,如圖所示。
excel怎麼只提取**中的數字
5、指定從第幾個陣列提取開始。也就是說在不連續的那些數字中,從第幾次出現的陣列開始提取。同樣在模組那裡輸入如下**:
function getnums(rcell as range, num as integer) as stringdim arr1() as string, arr2() as stringdim chr as string, str as stringdim i as integer, j as integeron error goto line1
str = rcell.textfor i = 1 to len(str)chr = mid(str, i, 1)if (asc(chr) 《 48 or asc(chr) 》 57) thenstr = replace(str, chr, 「 」)end ifnext
arr1 = split(trim(str))redim arr2(ubound(arr1))for i = 0 to ubound(arr1)if arr1(i) 《》 「」 thenarr2(j) = arr1(i)j = j + 1end ifnext
getnums = iif(num 《= j, arr2(num - 1), 「」)line1:end function
6、在回到單元格那裡輸入「=getnums(a3,2)」就可以提取第幾次出現的陣列了,如圖所示。
11樓:匿名使用者
附件做好的,
有問題追問
alt +f8執行
12樓:
你的前兩個表是不是固定的名稱,而且是不需要提取的?
如何用vba對統計一列有多少個有數值的單元格
13樓:匿名使用者
14樓:蔣暉孫華翰
這個不需要vba,用count函式即可。
15樓:股道瘦馬
'假設對第3行操縱
dim i as integer
dim mysum as integer
mysum=0
for i=1 to 300
if cells(3,i)<>"" then mysum=mysum +1
next i
請問 vba 從字串中提取數字的函式 ,或者方法?
16樓:
mid函式引數位置前兩個顛倒了
17樓:匿名使用者
a="ade125qq"
s=len(a)
m=""
for i= 1 to s
n=mid(i,a,1)
end if
next i
debug print m 'm就是提取的所有數字定義之類的請自行處理。
如何用vba取電子**單元格中的字元的n位資料?
18樓:依然特雷西
1、excel中有資料如下圖所示,將所有的資料合併到b1單元格中。
2、按下alt+f11,開啟vba編輯介面,雙擊資料所在的工作表,如下圖所示。
3、輸入**如下圖所示:sub 魚目混珠() range("b1") = range("a1") & range("a2") & range("a3") & range("a4") end sub。
4、點選執行子程式按鈕,如下圖所示。
5、關閉vba編輯介面,返回到excel中,就可以看到a1:a4的內容合併到了b1單元格中,如下圖所示。
19樓:魚木混豬喲
vba中也可以用mid函式提去字元的n位資料軟體版本:office2013
舉例說明如下:
1.從下表e列資料中,提取第2位開始的5位資料:
2.alt+f11,在相應工作表中輸入**如下:
3.f5執行**,即可提取出相應的資料來:
20樓:匿名使用者
mid(需要提取的字串,從左邊算起提取的第一個字元的位置的數字,提取字元的個數數字)
例如:tt = "abcdefgh"
xx = mid(tt,4,2)
xx的返回值為:"de"
21樓:黑桃5悲鳴
巨集-錄製巨集-使用公式mid(a1,3,2),下拉填充-停止
這樣的話就錄好了這樣的巨集
22樓:匿名使用者
sub aaa()
msgbox mid(range("a1").text,n,1) 'n就是第幾個字元,自己修改即可。
end sub
vba的mid函式問題
23樓:姓王的
假如用s代表這個字串
第一種:mid(s,4,len(s)-6)第二種:val(mid(s,4))
第三種:replace(s,"abs","")
24樓:匿名使用者
不用mid函式,用substitute函式替換掉"abs"為空就行了,比方事例字串在a1單元格:
=substitute(a1,"abs","")
25樓:匿名使用者
樓主是不是這個意思
sub zf()
temp = range("a1")
if temp like "abs*abs" thenn = mid(temp, 4, 7)
range("b1") = n
else
end if
end sub
mid函式裡不能用萬用字元的
26樓:
用這個,好使!
sub zf()
temp = range("a:a")
for i = 1 to ubound(temp)if temp(i, 1) like "abs*abs" thenn = mid(temp(i, 1), 4, 7)range("b" & i) = n
else
end if
next
end sub
27樓:匿名使用者
如果abs固定,可以試試這個 =replace("abs3362514abs","abs","")
如何辟穀(釋萬行), 轉載 如何辟穀(釋萬行)
沒有 嘛 伊斯蘭教 佛教 教 天主教 道教 中華人民共和國 people s republic of china 簡稱 中國 成立於1949年10月1日,位於亞洲東部,太平洋西岸,是工人階級領導的 以工農聯盟為基礎的人民民主 莫文靈雲南 中國五大宗教 中國五大宗教是指在中國具有一定歷史影響,形成中華...
excel資料太長1萬行怎麼分成10份,一份1000如圖做示範,謝謝啦
我來也 在b1單元格輸入一個數字1,然後選擇b列,再按選單項 開始 填充 該按鍵一般在 按鈕下面的 系列 步長為1,終止值 1000 確定後,在b列就是1 1000號的序號了。然後,在b1單元格輸入公式 indirect a 1000 column a1 1 row a1 或者是公式 offset ...
萬行法師 學佛究竟學什麼,修行究竟修的是什麼
1 我們要學佛,一定要認識佛教!佛教是釋迦牟尼佛的教育,它裡頭講什麼東西?我把它分為五大類 倫理 道德 因果 哲學 科學。2 我們接受釋迦牟尼佛的教育,對這個宇宙萬事萬物 於世出世間一切諸法 性相 理事 因果通達明瞭,這才叫學佛。3 我們學佛,一定要讀誦經典。每一天讀誦,就是每一天接受佛的教誨,念念...