2015-03-03 26 views
-1

我有一個包含這樣的數據的Excel文件中的隨機行:獲取一個表,其中列是一個已知值

id line | idsector |sector | isSectorPrior |etc... 
1   | 1  | east | no 
2   | 1  | east | no 
3   | 1  | east | yes 
4   | 1  | east | yes 
5   | 2  | west | yes 
6   | 2  | west | yes  
7   | 2  | west | no 
8   | 2  | west | yes 

我要畫一條線在那裏isSectorPrior將是「是」,並然後,當我有行,得到id line即在小區1

所以在這裏,它可以選擇行3,4,5,6或8

我發現了很多或樣品,它使用範圍(an example),但它們可以返回例如第7行,儘管它有一個「否」。這不應該發生。

如何指定,隨機獲得一個排,但只有在iSectorPrio是肯定的?

我當前的代碼,沒有這麼多,因爲我沒有找到任何可以匹配的內容我想:

'get a sheet to use and find a random row 
Set tempSheet = ActiveWorkbook.Sheets(1).Select 
'loop 50 times, to draw 50 different lines 
    For i = 1 To 50 
'todo : get randow row, where IsSelectPrio is yes 
'then do whatever I want with it, like write copy it in another sheet or a csv 
    Next i 

這裏(對我來說)的難度,沒有特別的範圍內,所有我發現正在使用該範圍。並且考慮到,在第一行中,它不是表格的一部分。

有沒有辦法做我想要的?

+0

我認爲它可以使用返回多頭的數組,包含匹配的行ID的UDF下來。 UDF將採取您選擇的範圍。 – 2015-03-03 08:17:41

回答

0

至少有兩種方法。

方法1:獲取一個隨機的行號(例如使用that other solution you link to中的代碼),然後檢查該行是否有「是」。如果不是,則得到一個新的隨機數;重複,直到你得到一個是的。 (警告:如果你沒有yes'es,這將進入無限循環。)

方法2:首先列出行號爲yes的行列表;然後從中隨機挑選一個。

+0

正如我先問,我選擇了多少前線,第一個解決方案不是無限循環的問題。謝謝。 – 2015-03-03 08:54:09

+0

我不明白你的意思。我認爲你應該嘗試一下,然後告訴我們你遇到了什麼問題,以便我們可以幫助解決它。 – 2015-03-03 08:58:07

0

如果你唯一的問題是找到合適的範圍內選擇一個隨機行,你可以這樣做:

(如果你的工作有看它現在看起來同樣的方式,使得它的一個副本)

Dim ws As Worksheet 
Dim sortRangeRows As Integer 
Dim lastRow, lastColumn As Integer 

'Get sortRange 

lastRow = ThisWorkbook.Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row 
lastColumn = ThisWorkbook.Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column 

Set ws = ThisWorkbook.Sheets(1) 
Set sortRangeRows = ws.Range(ws.Cells(1, 1), ws1.Cells(lastRow, lastColumn)) 

'Sort after isSectorPrior: 
sortRangeRows.Sort Key1:=sortRangeRows(1, 4), Order1:=xlAscending, Header:=xlYes, Orientation:=xlSortColumns 

'Find the last row with a "yes" in it (not entirely sure about this piece of code) 

lastRowYes = ws1.Cells.Find("yes", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

現在,你有你的一個肯定行的範圍。 HTH

相關問題