Board logo

標題: 整理資料 [打印本頁]

作者: Qin    時間: 2018-9-14 14:40     標題: 整理資料

E & F 欄是系統導出的資料, 我想把它整理成如: A - D 欄這般.                       
請問該如何下公式?                       
[attach]29403[/attach]
作者: 准提部林    時間: 2018-9-16 09:51

A7:
=IF(LEFT(E6,7)="Invoice",--MID(E6,11,6),IF(COUNT(-LEFT(E7)),LOOKUP(9^9,A$6:A6),""))
 
B7:日期轉換較煩麻
=IF(LEFT(E6,7)="Invoice",--TEXT(SUM(MID(SUBSTITUTE(MID(E6,19,10),"/",REPT(" ",9)),{1,2,3}*9-8,9)*10^{0,2,4}),"0-00-00"),IF(A7="","",LOOKUP(9^9,B$6:B6)))
 
C7:
=IF(A7="","",LEFT(E7,FIND(" ",E7)-1))
 
D7:
=IF(A7="","",MID(E7,FIND(" ",E7)+1,99))
作者: Qin    時間: 2018-9-16 17:17

回復 2# 准提部林


  謝謝!
作者: Qin    時間: 2018-10-31 23:13

回復 2# 准提部林

准大
有些資料抓不到, 麻煩你再幫我看看...
謝謝!!

[attach]29614[/attach]
作者: 准提部林    時間: 2018-11-1 10:32

回復 4# Qin


1)
=IF(LEFT(E6,7)="Invoice",--MID(E6,11,6),IF(COUNT(-MID(E7,7,2)),LOOKUP(9^9,A$6:A6),""))

2)
=IF(LEFT(E6,7)="Invoice",--TEXT(SUM(MID(SUBSTITUTE(MID(E6,19,10),"/",REPT(" ",9)),{1,2,3}*9-8,9)*10^{0,2,4}),"0-00-00"),IF(A7="","",LOOKUP(9^9,B$6:B6)))

3)
=IF(A7="","",LEFT(E7,FIND(" ",E7&" ")-1))

4)
=IF(A7="","",MID(E7,FIND(" ",E7&" ")+1,99))
作者: Andy2483    時間: 2023-6-7 15:16

謝謝論壇,謝謝各位前輩
後學藉此帖練習VBA陣列,學習方案如下,請各位前輩指教

執行前:
[attach]36548[/attach]

執行結果:
[attach]36549[/attach]


Option Explicit
Sub TEST()
Dim Brr, Crr, V, Z$, Q, i&, T$
'↑宣告變數
Brr = Range([E6], [E65536].End(3))
'↑令Brr變數是 二維陣列,以E欄儲存格值帶入陣列中
Z = "Invoice [#] ######  #*/#*/####"
'↑令Z變數是字串
ReDim Crr(1 To UBound(Brr) - 1, 1 To 4)
'↑令Crr變數是 二維空陣列,縱向範圍1~Brr陣列縱向最大索引列號-1,橫向範圍1~4
For i = 1 To UBound(Brr)
'↑設順迴圈!
   T = Brr(i, 1)
   '↑令T變數是 迴圈Brr陣列值(字串)
   If T Like Z Then V = Split(T, " "): GoTo i01
   '↑如果以 Like 運算子 判別(T變數與Z變數)回傳 True?
   '是就令V是(以空白字元分割T變數的一維陣列),令程序跳到i01位置繼續執行

   If Val(T) = 0 Then GoTo i01 Else T = T & " "
   '↑如果T變數轉數值後是 0?是就令程序跳到i01位置繼續執行,
   '否則就令T變數連接" "組成為新字串

   Crr(i - 1, 1) = V(2): Crr(i - 1, 2) = V(4)
   '↑令Crr陣列第1欄寫入(2索引號V陣列值),
   '令Crr陣列第2欄寫入(4索引號V陣列值)

   Q = InStr(T, " ")
   '↑令Q變數是判定T變數第1個空白字元的位置
   Crr(i - 1, 3) = Left(T, Q - 1)
   '↑令Crr陣列第3欄寫入T變數的左側(Q - 1)個字元
   Crr(i - 1, 4) = Trim(Mid(T, Q + 1))
   '↑令Crr陣列第4欄寫入T變數從(Q + 1)個字以後的字串
i01: Next
[A7].Resize(UBound(Crr), 4) = Crr
'↑令從[A7]開始擴展的範圍儲存格值是Crr陣列值
Erase Brr, Crr, V
'↑令釋放變數
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)