返回列表 上一主題 發帖

依條件選對應值

本帖最後由 yen956 於 2014-4-9 13:14 編輯

回復 1# yeh6712
1. 工作表 "仰臥起坐", (第2列)插入一列, 並各填 100,
這樣, 男生超過60次, 女生超過45次才能抓到分數
2. 定義名稱:
x=仰臥起坐!$A$2:$A$63
y=仰臥起坐!$D$2:$D$47
如下圖:

3. 工作表 "成績總表" , E2 公式:
=IF(C2="男",INDIRECT("仰臥起坐!B"&IF(C2="男",MATCH(D2,x,-1)+1,MATCH(D2,y,-1)+1)),INDIRECT("仰臥起坐!E"&IF(C2="男",MATCH(D2,x,-1)+1,MATCH(D2,y,-1)+1)))
向下拉
請參考!!
註:原附圖, 女生45次, 應為100分, 你誤填為男生的95分,
害我以為公式有問題, 查了半天才發現問題所在.

TOP

回復 1# yeh6712
  1. Option Explicit
  2. Sub Ex()
  3.     Dim i As Integer, M As Variant, S As Integer, Rng As Range
  4.     i = 2
  5.     With Sheets("成績總表")
  6.         Do While .Cells(i, "C") <> ""
  7.             S = 0               '不是男女
  8.             If .Cells(i, "C") = "男" Then
  9.                 S = 1                'A欄
  10.             ElseIf .Cells(i, "C") = "女" Then
  11.                 S = 4                'D欄
  12.             End If
  13.             If S > 0 And .Cells(i, "D") > 0 Then   '條件: 有欄位 且 仰臥起坐次數 > 0
  14.                 If .Cells(i, "D") < Sheets("仰臥起坐").Columns(S).Cells(2, 1) Then
  15.                     M = Application.Match(.Cells(i, "D"), Sheets("仰臥起坐").Columns(S), 0)
  16.                 ElseIf .Cells(i, "D") >= Sheets("仰臥起坐").Columns(S).Cells(2, 1) Then
  17.                     M = 2  '100分
  18.                 End If
  19.                 If IsNumeric(M) Then .Cells(i, "E") = Sheets("仰臥起坐").Columns(S).Cells(M, 2)
  20.                 'Application.Match 工作表的函數:沒有找到時傳回 錯誤值               
  21.             End If
  22.             i = i + 1
  23.         Loop
  24.     End With
  25. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 一個缺口的杯子,如果換一個角度看它,它仍然是圓的。
返回列表 上一主題