標題:
特定區塊依編號重新排列問題
[打印本頁]
作者:
lionliu
時間:
2012-4-9 15:35
標題:
特定區塊依編號重新排列問題
各位大哥好
小弟碰到一個區塊須依編號重新排列的問題,音箱不到好方法現在用手動處裡
想請教各位大大要如何做較好:dizzy: [attach]10361[/attach]
作者:
GBKEE
時間:
2012-4-9 17:16
回復
1#
lionliu
需要依遍號順序重排區塊
你須要說明一下吧
作者:
hugh0620
時間:
2012-4-9 17:53
回復
2#
GBKEE
G大~ 他的資料~ 我在處理上是有一些問題的~
在每個區塊的空排列中~ 為非空白~ 處理起來蠻怪的~
我是用手動先把空白列DETEL~ 再用程式碼來跑~
請你在修改比較簡便的方式~
Private Sub CommandButton1_Click()
Dim A As Integer
Dim B As Integer
Dim D As Integer
A = InputBox("請輸入開始列") '15 140
B = InputBox("請輸入結束列") '134 256
If A >= 1 And B >= A Then
For Each R In Sheet1.Range("C" & A & ":C" & B) '因C欄位的資料是文字,先轉換成數字
Range("M" & R.Row) = R.Value
Next
C = Application.Max(Sheet1.Range("M:M")) '抓取計算的最大值
Sheet1.Range("M" & A & ":M" & B).ClearContents '清除要排序的資料區
For I = 1 To C
For Each R In Sheet1.Range("C" & A & ":C" & B)
D = I
If R = D Then
If A1 = "" Then
Sheet1.Range("N" & A) = R.Value
J = 0
Do Until R.Offset(J + 1, 9) <> ""
Range("P" & A + J) = R.Offset(0 + J, 2)
If R.Offset(J, 8) <> "" Then
Range("V" & A + J) = R.Offset(0 + J, 8)
End If
If R.Offset(J, 9) <> "" Then
Range("W" & A + J) = R.Offset(0 + J, 9)
End If
J = J + 1
Loop
Else
Sheet1.Range("N" & A1) = R.Value
J = 0
Do Until R.Offset(J, 2) = ""
Range("P" & A1 + J) = R.Offset(0 + J, 2)
If R.Offset(J, 8) <> "" Then
Range("V" & A1 + J) = R.Offset(0 + J, 8)
End If
If R.Offset(J, 9) <> "" Then
Range("W" & A1 + J) = R.Offset(0 + J, 9)
End If
J = J + 1
Loop
End If
A1 = Range("P65536").End(xlUp).Offset(2, 0).Row
End If
Next
Next
End If
End Sub
複製代碼
作者:
hugh0620
時間:
2012-4-9 17:56
回復
1#
lionliu
因為您的資料有一些問題~
所以~ 我的作法是先將空白列的地方先按DELETE清除資料~
再來執行VBA~
看看附件的結果是不是你要的結果~
作者:
lionliu
時間:
2012-4-9 18:18
謝謝 hugh0620 和 G 大喔抱歉我說明的不清楚 ,我抓回來試一下再跟2為大大報告喔
作者:
Hsieh
時間:
2012-4-9 18:49
回復
1#
lionliu
[attach]10369[/attach]
作者:
GBKEE
時間:
2012-4-9 20:27
回復
5#
lionliu
你這好像是 進口艙單 要分提單號碼 內容有 貨物的Mark, 貨物的名稱, 貨物的件數,
請附上完整分提單號碼 艙單 來試試看
作者:
lionliu
時間:
2012-4-10 13:15
謝謝Hsieh你的方法有想過但是因為選取範圍問題一直想不到好的方法。
GBKEE大哥我這是國外客戶要求文件INVOICE要如此所以很麻煩SORRY
才想說看是否可介VBA來處理。
作者:
Hsieh
時間:
2012-4-10 14:28
回復
8#
lionliu
Sub Sort_Ex()
Dim Rng As Range
Columns("C:C").NumberFormat = "G/通用格式"
rs = Cells(Rows.Count, 5).End(xlUp).Row
r = 2: yn = False: s = 2
Do Until r >= rs
If InStr(Cells(r, 5), "P/O") > 0 Then
If yn = False Then
yn = True: x = 1
Else
yn = False
Set Rng = Cells(s + 1, 3).Resize(x - 2, 10)
k = Application.CountA(Rng.Columns(1))
If k > 0 Then
Rng.Columns(1).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
Rng = Rng.Value
Rng.Sort key1:=Rng(1), Header:=xlNo
End If
x = 0: s = r: r = r - 1
End If
End If
r = r + 1: x = x + 1
Loop
End Sub
複製代碼
作者:
lionliu
時間:
2012-4-10 16:40
回復
9#
Hsieh
Hsieh大大 太厲害了 趕快來試一下若可以我晚上睡覺都會偷笑喔;P
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)