Board logo

標題: [發問] 依訂單_標示客戶 [打印本頁]

作者: PJChen    時間: 2021-2-12 00:43     標題: 依訂單_標示客戶

各位 新年快樂:
1..        客戶名稱標示在A1(有可能改變,以A1為依據)
2..        E欄帶有文字的是訂單號碼,無文字的都不算訂單號碼
3..        訂單內容會隨客戶下單而變動(增加or減少,條碼也會重複出現)
       
        B欄的需求:
a)        當E欄出現第一筆訂單號碼,則B欄帶出A1的客戶名稱 (Ex:b1:b13)
        一直到出現第2筆訂單號碼為止
b)        當E欄出現第2筆訂單號碼,則B欄帶出A1的客戶名稱2 (Ex:b14:b26)
        一直到出現第3筆訂單號碼為止
        依此類推…
[attach]33050[/attach]
作者: PJChen    時間: 2021-2-12 10:44

回復 1# PJChen

1..        客戶名稱是標示在A1(有可能改變,以A1為依據)
2..        E欄帶有文字的是訂單號碼
3..        訂單內容會隨客戶下單而變動(增加or減少,條碼也會重複出現)
       
        B欄的需求:
a)        當E欄出現第一筆訂單號碼,則B欄帶出A1的客戶名稱(Ex:b2:b39)
        一直到出現第2筆訂單號碼為止
b)        當E欄出現第2筆訂單號碼,則B欄帶出A1的客戶名稱+2(Ex:b40:b52)
        一直到出現第3筆訂單號碼為止
        依此類推…
已將表格改為有表頭,請以此檔為準...謝謝  [attach]33051[/attach]
作者: 軒云熊    時間: 2021-2-12 15:23

回復 2# PJChen

有空幫我看一下 是不是這樣 感謝
  1. Public Sub 比對數值練習()
  2. Application.ScreenUpdating = False

  3.     Arr = [A1].CurrentRegion

  4.     For X = 2 To UBound(Arr, 1)
  5.         For Y = 1 To UBound(Arr, 2)
  6.             If Not IsNumeric(Arr(X, 5)) Then
  7.                  Cells(X, 2) = Arr(1, 1)
  8.             End If
  9.         Next Y
  10.     Next X

  11. Application.ScreenUpdating = True
  12. End Sub
複製代碼

作者: PJChen    時間: 2021-2-12 18:59

回復 3# 軒云熊

您好,

我希望客戶名稱可以填在B欄,如同這樣的結果,再麻煩您...
[attach]33053[/attach]

但目前程式執行結果是這樣:
[attach]33054[/attach]
作者: 軒云熊    時間: 2021-2-12 19:30

本帖最後由 軒云熊 於 2021-2-12 19:34 編輯

回復 4# PJChen

我看不出來 >"<  可不可以請PJChen 大大框起來 說清楚一點 ...  抱歉 ^^"
作者: PJChen    時間: 2021-2-12 20:04

回復 5# 軒云熊

不好意思,可能我表達得不好,我在檔案中放一個執行後,想要達成的(正確)的工作表
您執行看看,就知道差別在哪!
[attach]33055[/attach]
作者: PJChen    時間: 2021-2-12 20:22

回復 3# 軒云熊
您好,

程式無法執行吔....
[attach]33056[/attach]
作者: 軒云熊    時間: 2021-2-12 22:12

回復 7# PJChen

有空幫我試試看這個是不是你要的結果  感謝
  1. Sub 比對數值練習()
  2.     Application.ScreenUpdating = False

  3.     Arr = [A1].CurrentRegion
  4.    
  5.     For X = 2 To UBound(Arr, 1)
  6.         If Not IsNumeric(Arr(X, 5)) And Arr(X, 2) = "" Then
  7.             Cells(X, 2) = Arr(1, 1)
  8.             T = Arr(1, 1) & R
  9.             If R > 1 Then T = Mid(Arr(1, 1), 1, Len(Arr(1, 1)) - 1) & R
  10.             Arr(1, 1) = IIf(R = 0, Arr(1, 1), T)
  11.             If R >= 1 Then Cells(X, 2) = Arr(1, 1)
  12.             R = R + 1
  13.         ElseIf IsNumeric(Arr(X, 5)) And Cells(X - 1, 2) <> "" Then
  14.             Cells(X, 2) = Arr(1, 1)
  15.         End If
  16.     Next X

  17.     Application.ScreenUpdating = True
  18. End Sub
複製代碼

作者: PJChen    時間: 2021-2-12 22:29

回復 8# 軒云熊
真感謝!正確
作者: 軒云熊    時間: 2021-2-12 22:41

回復 7# PJChen

剛才發現 加總會差1 所以改了一下 有空再幫我看看是不是你要的結果 感謝   祝  ~ 新年快樂   萬事如你(妳)意  ~

[attach]33057[/attach]
作者: PJChen    時間: 2021-2-13 10:42

回復 10# 軒云熊
今天使用時正好發現有問題,真是及時雨,感謝!
作者: 准提部林    時間: 2021-2-13 10:54

Sub TEST()
Dim Arr, i&, T$, N&
Arr = Range([e1], [c65536].End(xlUp))  '以C欄檢查最後一筆
T = [a1]   'A1名稱文字
For i = 2 To UBound(Arr)
    If Arr(i, 3) Like "[A-z]*#*" Then N = N + 1 'E欄帶有[英文+數字], 累加1
    Arr(i - 1, 1) = T & IIf(N > 1, N, "")  '名稱+序號(N>=2)
Next i
[B2].Resize(UBound(Arr) - 1) = Arr
End Sub
作者: 軒云熊    時間: 2021-2-13 17:48

回復 12# 准提部林

謝謝準大的提點 這個邏輯更清楚 先收下了
:)




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