有没有办法使用公式来获得excel来查看值并确定它们是否至少有25%匹配然后添加它们的值。有点像vlookup和IF功能相结合,但我不知道如何做25%的部分。我问这个的原因是因为我的公司名称是同一家公司的数据集,但它们都以不同的方式键入,因此excel将它们视为独立的公司。例如:
#include <fstream>
#include <strtk.hpp> // http://www.partow.net/programming/strtk
using namespace std;
// using strings instead of character arrays
class Employee
{
public:
int index;
int employee_number;
std::string name;
std::string department;
std::string band;
std::string location;
};
std::string filename("empdata.txt");
// assuming the file is text
std::fstream fs;
fs.open(filename.c_str(), std::ios::in);
if(fs.fail()) return false;
const char *whitespace = " \t\r\n\f";
const char *delimiter = "|";
std::vector<Employee> employee_data;
// process each line in turn
while( std::getline(fs, line ) )
{
// removing leading and trailing whitespace
// can prevent parsing problemsfrom different line endings.
strtk::remove_leading_trailing(whitespace, line);
// strtk::parse combines multiple delimeters in these cases
Employee e;
if( strtk::parse(line, delimiter, e.index, e.employee_number, e.name, e.department, e.band, e.location) )
{
std::cout << "succeed" << std::endl;
employee_data.push_back( e );
}
}
我需要它才能意识到所有拥有“XYZ”的公司都是相同的,并且要添加所有价值。 “ABC”也是如此。再一次,我不完全确定这是可能的,但我还没有找到一种方法来获得擅长为我总结。
旁注我可以手动完成,但问题是数据集总是在变化,所以我需要一个可以识别每个单元格中相似性的公式。
答案 0 :(得分:3)
尝试使用Sumproduct。我假设您的所有A列都将以公司名称开头。 (即没有'公司XYZ',只有'XYZ [...]'。如果情况并非总是如此,请告诉我。
这有用吗?我假设公司是上校A,价值是上校B - 去第7行。
=SUMPRODUCT(--(LEFT($A$2:$A$7,LEN(E2))=E2),--($B$2:$B$7>=25),$B$2:$B$7)
因此,如果一个单元格具有“XYZ”作为公司,并且该行的“值”为25或更大,则它将加在一起。 XYZ单元格等于65,您可以看到ABC正确计算39。
编辑:这是一个截图,使用命名范围可能更容易看到公式中的位置:
答案 1 :(得分:0)
是的,尝试SUMPRODUCT它很棒。很简单,它通过列B查看公司名称,该公司名称将名称中的左侧三个字符与您在单元格E3中键入的内容相匹配,并对值列中的值进行求和。
=SUMPRODUCT(--(LEFT(B4:B9,3)=E3)*1,C4:C9)