Как получить некоторый (X) процент случайной выборки для каждой группы столбцов в Excel с использованием VBA / Macro - PullRequest
0 голосов
/ 31 октября 2019

Может ли кто-нибудь помочь мне с Excel VBA , чтобы извлечь «Некоторый (x) процентный случайный образец для каждой группы в столбце» на другой лист / Excel.

Образец данных:


Name | Date     | Dept    | Subject|
Aj   | 01/01/19 | Science | PS     |
Aj   | 01/02/19 | Science | NS     | 
Raj  | 01/01/19 | Maths   | Part-1 | 
Raj  | 01/02/19 | Maths   | Part-2 |
Raj  | 01/03/19 | Maths   | Part-3 | 
Baba | 01/01/19 | Social  | Bhugol |
Raj  | 01/03/19 | Maths   | Part-4 |

Итак, если мы выполняем макрос, сначала он должен запросить требуемый процент выборки (например, 25% в этом случае)

Затем желаемый вывод для этогоданные выборки будут выглядеть так:

вывод:


Name | Date     | Dept    | Subject|
Aj   | 01/01/19 | Science | PS     |
Raj  | 01/01/19 | Maths   | Part-1 |
Baba | 01/01/19 | Social  | Bhugol | 

Здесь данные выбираются на основе столбца Имя . Пожалуйста, помогите мне решить эту проблему, учитывая, что я новичок в Excel VBA.

Это то, что я пробовал:

Sub Extract_25_percent()

    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim rwMax As Long, rw As Long, colMax As Integer

    Application.ScreenUpdating = False

    Set ws1 = Worksheets("Sheet1")
    Set ws2 = Worksheets.Add
    ws1.Range("A1").CurrentRegion.Copy ws2.Range("A1")
    rwMax = ws2.Range("A1").CurrentRegion.Rows.Count
    colMax = ws2.Range("A11").CurrentRegion.Columns.Count + 1
    ws2.Cells(1, colMax) = "Random"

    For rw = 2 To rwMax

        ws2.Cells(rw, colMax) = WorksheetFunction.RandBetween(1, rwMax)
    Next rw

    ws2.Range("A1").CurrentRegion.Sort Key1:="Random", Order1:=xlAscending, Header:=xlYes
    rw = WorksheetFunction.RoundUp((rwMax - 1) / 25, 0) + 1
    ws2.Range(Cells(1, colMax), Cells(rwMax, colMax)).ClearContents
    ws2.Range(Cells(rw, 1), Cells(rwMax, colMax)).ClearContents
    'ws2.Range("A1").CurrentRegion.Sort Key1:="No", Order1:=xlAscending, Header:=xlYes
    ws2.Columns.AutoFit

End Sub

Этот код может получить только мнеСлучайный процент без группировки столбца ИМЯ .

Мне нужно получить хотя бы одну позицию для каждой группы в худшем случае ..!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...