Quantcast
Channel: Active questions tagged excel - Stack Overflow
Viewing all articles
Browse latest Browse all 88075

Errors Selecting Nth Row of Filtered Data

$
0
0

I am writing a macro to tag specified lines of a table for sample review.

Due to the volume of data, running repeated loops over the entire population would result in unacceptably long runtimes (as I have to tag specified sub-populations for QA sampling. The approach I have taken is to bring in the table, and then filter it based on the population I want to sample (for example, filter by location, by product, and by analyst) and then select a percentage of that population for sampling by putting "Sample" into a column.

I have tried several permutations of the code. The first, where I used the Areas function, threw 1004 errors if there was more than one row. The second gives strange row selections, including selecting non-hidden rows (and I can't understand why it is picking the rows that it is, as they don't seem to be correctly offset even if it was going by "all rows" not just visible rows.

Halp. Also sorry for my code.

        ActiveSheet.ListObjects("SourceDataTable").Range.AutoFilter Field:=1, Criteria1:="Product1"
        sectionCount = ActiveSheet.ListObjects("SourceDataTable").AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1
        If sectionCount = 0 Then sectionSampleSize = 0 Else sectionSampleSize = Int((sectionCount / 10) + 0.5)
        MsgBox ("Analyst "& analystLoopCellRef.Value & " ecomm section count is "& sectionCount & " and sample size is "& sectionSampleSize)

        Do While sectionSampleSize > 0

            sectionLoopRand = Int(sectionCount * Rnd + 1)

            MsgBox (sectionLoopRand)
'            MsgBox (ActiveSheet.ListObjects("SourceDataTable").DataBodyRange.SpecialCells(xlCellTypeVisible).Areas(1).Columns(40).Rows(sectionLoopRand).Cells(1, 1).Value)

            If ActiveSheet.ListObjects("SourceDataTable").DataBodyRange.SpecialCells(xlCellTypeVisible).Columns(40).Rows(sectionLoopRand).Cells(1, 1).Value = "Sample" Then
                MsgBox ("Sample overlap")
            Else
                ActiveSheet.ListObjects("SourceDataTable").DataBodyRange.SpecialCells(xlCellTypeVisible).Columns(40).Rows(sectionLoopRand).Cells(1, 1).Value = "Sample"'                MsgBox ("Sample address is "& ActiveSheet.ListObjects("SourceDataTable").DataBodyRange.SpecialCells(xlCellTypeVisible).Columns(40).Rows(sectionLoopRand).Cells(1, 1).Address)
                sectionSampleSize = sectionSampleSize - 1
'                MsgBox ("Sample selected")
            End If


        Loop

Older version

        ActiveSheet.ListObjects("SourceDataTable").Range.AutoFilter Field:=1, Criteria1:="Product1"
        sectionCount = ActiveSheet.ListObjects("SourceDataTable").AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1
        If sectionCount = 0 Then sectionSampleSize = 0 Else sectionSampleSize = Int((sectionCount / 10) + 0.5)
        MsgBox ("Analyst "& analystLoopCellRef.Value & " ecomm section count is "& sectionCount & " and sample size is "& sectionSampleSize)

        Do While sectionSampleSize > 0

            sectionLoopRand = Int(sectionCount * Rnd + 1)

            MsgBox (sectionLoopRand)
'            MsgBox (ActiveSheet.ListObjects("SourceDataTable").DataBodyRange.SpecialCells(xlCellTypeVisible).Areas(sectionLoopRand).Columns(40).Cells(1, 1).Value)

            If ActiveSheet.ListObjects("SourceDataTable").DataBodyRange.SpecialCells(xlCellTypeVisible).Areas(sectionLoopRand).Columns(40).Cells(1, 1).Value = "Sample" Then
                MsgBox ("Sample overlap")
            Else
                ActiveSheet.ListObjects("SourceDataTable").DataBodyRange.SpecialCells(xlCellTypeVisible).Areas(sectionLoopRand).Columns(40).Cells(1, 1).Value = "Sample"''                MsgBox ("Sample address is "& ActiveSheet.ListObjects("SourceDataTable").DataBodyRange.SpecialCells(xlCellTypeVisible).Areas(sectionLoopRand).Columns(40).Cells(1, 1).Address)
                sectionSampleSize = sectionSampleSize - 1
'                MsgBox ("Sample selected")
            End If


        Loop


Viewing all articles
Browse latest Browse all 88075

Trending Articles