2014-07-07 98 views
-1

我工作的一個谷歌的電子表格,這樣的提取多個號碼(這是一個單柱):谷歌電子表格:從文本的單元格

1 
2 
3,4 
5 
6-9 
15 
18 

3,4是3和​​4

6 -9是6,7,8和9

在另一張紙上,我做了一個標準的1-100列表,我必須找到一種方法來「標記」顯示或包含在上一個列表中的數字,如這個。

1  YES 
2  YES 
3  YES 
4  YES 
5  YES 
6  YES 
7  YES 
8  YES 
9  YES 
10  NO 
11  NO 
12  NO 
13  NO 
14  NO 
15  YES 

我可以很容易地通過使用在B1單元格中找到簡單的唯一編號: = IF((COUNTIF(列表$ A $ 1:$ A $ 100 VALUE(A1))= 1), 「YES」 ,「否」)

我甚至能找到的第一個號碼是什麼:

=IFERROR(LEFT(list!$A$1:$A$100,(SEARCH(",",list!$A$1:$A$100)-1)),IFERROR(LEFT(list!$A$1:$A$100,(SEARCH("-",list!$A$1:$A$100)-1)),list!$A$1:$A$100)) 

但我不能擴大搜索包括「XY」的數字或「X逗號後,Y」。

我試過和(「大於第一個數字」,「小於第二個數字」),但我還沒有找到一種方法來提取第二個數字。

有什麼建議嗎?

回答

0

這裏是一個宏,它將適用於excel電子表格。您可以將其修改爲Google應用腳本:

Sub IsItThere() 
    Dim s1 As Worksheet, s2 As Worksheet, N As Long 
    Dim v As Variant, i As Long, ary() 
    Dim N1 As Long, N2 As Long, j As Long 
    Set s1 = Sheets("Sheet1") 
    Set s2 = Sheets("Sheet2") 

    s1.Activate 

    N = Cells(Rows.Count, "A").End(xlUp).Row 
    Dim c As Collection 
    Set c = New Collection 
    For i = 1 To N 
     v = Cells(i, 1).Value 
     If InStr(1, v, ",") > 0 Then 
      c.Add CLng(Split(v, ",")(0)) 
      c.Add CLng(Split(v, ",")(1)) 
     ElseIf InStr(1, v, "-") > 0 Then 
      N1 = CLng(Split(v, "-")(0)) 
      N2 = CLng(Split(v, "-")(1)) 
      For j = N1 To N2 
       c.Add j 
      Next j 
     Else 
      c.Add CLng(v) 
     End If 
    Next i 
    ReDim ary(1 To c.Count) 
    For i = 1 To c.Count 
     ary(i) = c.Item(i) 
    Next i 

    s2.Activate 

    N = Cells(Rows.Count, "A").End(xlUp).Row 
    For i = 1 To N 
     v = Cells(i, 1).Value 
     For j = 1 To c.Count 
      If v = ary(j) Then 
       Cells(i, 2).Value = "YES" 
       GoTo pass 
      End If 
     Next j 
     Cells(i, 2).Value = "NO" 
pass: 
    Next i 
End Sub 
相關問題