返回列表 上一主題 發帖

[發問] 依所需條件 失敗 成功 重新排序...

[發問] 依所需條件 失敗 成功 重新排序...

該如何將原始檔...資料筆數不固定(不以資料篩選手動方式複製貼上)
1.jpg
2021-11-6 23:12

希望結果是依照原始檔 I 欄內回覆按所需條件
失敗(代碼 1 )全部先排序之後,
再排序成功(代碼 0 )之方式,
另存一個新的完整工作表(檔名為-排序後)

2.jpg
2021-11-6 23:13


1106.rar (41.68 KB)

1) 手動增建工作表:排序表
2) 原表→全選→複製
3) 排序表→全選→貼上, 複製→貼上值
   選取h2→遞減排序
4) 工作表→移動或複製→勾選"建立副本"→至"新活頁簿"→另存新檔→重新命名→儲存

熟練的話, 不須一分鐘吧!

TOP

隨意窩 "EXCEL迷"  blog  或https://blog.xuite.net/hcm19522/twblog
已收集8500篇 EXCEL函數

TOP

回復 2# 准提部林

感謝版主 准提部林  不吝指導

希望結果是能將近千筆的數據輸入或貼上相關數據之後
新工作表就能呈現所需結果(應該是指預設公式或是以VBA...進行排序)

TOP

回復 3# hcm19522


感恩  hcm19522  ...依所示陣列公式

已成功按所需條件...排序 失敗先 成功在後   ^^

TOP

回復 1# cypd

請測試看看,謝謝
Sub test()
Dim Arr
Sheets("工作表1").Copy After:=Sheets(Sheets.Count)
With Range([a2], [i65536].End(3))
    Arr = .Value
    .Value = Arr
    .Sort Key1:=.Item(9), Order2:=2, Header:=xlYes
End With
End Sub

TOP

回復 6# samwang


非常感謝  samwang  的回覆
已測試完成!希望結果正是我所需求的   ^^

另外有一問題
希望將工作表1內 E欄全部扣帳數據及 G 欄費用全部數據(筆數資料不固定)
希望用 VBA 程式碼方式將此二欄的數據全部複製到轉換資料工作表 A欄(扣帳) B欄(費用)之相關欄位內…

sshot-1.jpg
2021-11-9 03:31


1109.rar (80.44 KB)

TOP

回復 7# cypd

Sub test()
With Sheets("工作表1")
    R = .Range("e65536").End(3).Row
    .Range("e3:e" & R).Copy Sheets("轉換資料").[a2]
    .Range("g3:g" & R).Copy Sheets("轉換資料").[b2]
End With
End Sub

TOP

回復 8# samwang

水啦!!真的非常感謝  samwang  的回覆  ^^

針對  samwang  6樓以下原始的回覆

Sub test()
Dim Arr
Sheets("工作表1").Copy After:=Sheets(Sheets.Count)
With Range([a2], [i65536].End(3))
    Arr = .Value
    .Value = Arr
    .Sort Key1:=.Item(9), Order2:=2, Header:=xlYes
End With
End Sub

※若 I 欄回覆欄位成功與失敗(=IF(H3="","",IF(H3=0,"成功","失敗"))
系依據 H 欄內代碼 0 與 1 (成功-0 ,失敗-1)所產生
麻請 samwang 是否能將6樓原始碼修正,將 I 欄回覆欄位成功與失敗函數公式(=IF(H3="","",IF(H3=0,"成功","失敗")),以 VBA 方式加入6樓原始碼產生…
再依所需條件…...排序 失敗先 成功在後…另存一工作表(排序後)

sshot-1.jpg
2021-11-9 12:45

TOP

回復 9# cypd

請測試看看,謝謝
Sub test2()
Dim Arr, i&
With Sheets("工作表1")
    Arr = .Range(.[i3], .[a65536].End(3))
    For i = 1 To UBound(Arr)
        If Arr(i, 8) = 0 Then Arr(i, 9) = "成功"
        If Arr(i, 8) = 1 Then Arr(i, 9) = "失敗"
    Next
    [a3].Resize(UBound(Arr), 9) = Arr
    .Copy After:=Sheets(Sheets.Count)
End With
With Range([a2], [i65536].End(3))
    .Sort Key1:=.Item(9), Order2:=2, Header:=xlYes
End With
End Sub

TOP

        靜思自在 : 屋寬不如心寬。
返回列表 上一主題