1.假定数据从第二行开始,提取A列中都是“A”的对应行
G2输入=INDEX(A:A,SMALL(IF($A$2:$A$1000="A",ROW($2:$1000),4^8),ROW(A1)))&""
2.先按住CTRL+SHIFT,最后按回车键结束公式的输入
“然后我想获得它的数据类型:
_variant_t var;
var = fields->GetItem(_variant_t(i))->Type;
”
--------------------------------------------------
以下代码可以来判断你获取到的列的数据类型,以及列的值
std::string strValue;
std::ostringstream os;
switch (var.vt)
{
case VT_BSTR://字符串
case VT_LPSTR://字符串
case VT_LPWSTR://字符串
strValue = (LPCTSTR)(_bstr_t)var;
break;
case VT_I1:
case VT_UI1:
os.operator <<(var.bVal);
strValue = os.str();
break;
case VT_I2://短整型
os.operator <<(var.iVal);
strValue = os.str();
break;
case VT_UI2://无符号短整型
os.operator <<(var.uiVal);
strValue = os.str();
break;
case VT_INT://整型
os.operator <<(var.intVal);
strValue = os.str();
break;
case VT_I4: //整型
os.operator <<(var.lVal);
strValue = os.str();
break;
case VT_I8: //长整型
os.operator <<(var.lVal);
strValue = os.str();
break;
case VT_UINT://无符号整型
os.operator <<(var.uintVal);
strValue = os.str();
break;
case VT_UI4: //无符号整型
os.operator <<(var.ulVal);
strValue = os.str();
break;
case VT_UI8: //无符号长整型
os.operator <<(var.ulVal);
strValue = os.str();
break;
case VT_VOID:
os.operator <<(var.byref);
strValue = os.str();
break;
case VT_R4://浮点型
os.operator <<(var.fltVal);
strValue = os.str();
break;
case VT_R8://双精度型
os.operator <<(var.dblVal);
strValue = os.str();
break;
case VT_DECIMAL: //小数
os.operator <<((double)var);
strValue = os.str();
break;
case VT_CY:
strValue = (char* )(_bstr_t)var;
break;
case VT_BLOB:
case VT_BLOB_OBJECT:
case 0x2011:
strValue = "[BLOB]";
break;
case VT_BOOL://布尔型
strValue = var.boolVal ? "true" : "false";
break;
case VT_DATE: //日期型
strValue = (char* )(_bstr_t)var;
break;
case VT_NULL://NULL值
strValue = "";
break;
case VT_EMPTY://空
strValue = "";
break;
case VT_UNKNOWN://未知类型
default:
strValue = "UN_KNOW";
break;
}
return strValue;