【高分求解】Excel2007里有什么办法可以实现验证(C#的达人们也可以来帮帮忙)

ryan_allyes 2012-03-08 03:50:30
分不多 因为之前发了同样的一个帖子在office应用板块里了
http://topic.csdn.net/u/20120308/15/44232cd2-2f02-40fe-8835-273cb1612fc8.html?06045900873390773
所以解答好了 到时要分的可以直接这里拿分了!


各位大神们 怎么在excel2007里实现这样的验证 加入A列 B列里都各有内容,我想通过excel自身的功能去做个验证B列重复性的问题。
验证B列是否有重复的内容的单元格,如果有,则还需要判断对应的A列里这几个重复的单元格在A列的内容是否一致,如果A列的内容一致 则判断B列的重复单元格内容为重复内容,反之,则不为重复内容。
A B
测试 123
测试 123
测试1 123
测试2 1234

根据这个列子按上面的条件 可以看出 B1,B2单元格重复,但B1,B2和B3单元格并不重复

请问我怎么使用excel自身的功能去实现呢?
...全文
111 点赞 收藏 23
写回复
23 条回复
ryan_allyes 2012年03月26日
这里回复过的童鞋们 去这个帖子再拿分了 速度了 我要一起结贴了http://topic.csdn.net/u/20120308/15/44232cd2-2f02-40fe-8835-273cb1612fc8.html
回复 点赞
superliu1122 2012年03月10日
=IF(COUNTIFS($B$1:$B$10000,$B1,$A$1:$A$10000,$A1)>1,"重复","不重复")
用这个公式试试
回复 点赞
effun 2012年03月10日
那试试用ADO.NET连接工作薄,然后通过SQL语句查询。
回复 点赞
ryan_allyes 2012年03月09日
[Quote=引用 9 楼 kkxxllasasas 的回复:]
C# code



public void AddExpression(int cellR1, int cellC1, int cellR2, int cellC2, string expression)
{
Range cell1;
Range cell2;
cell1 = (Range……
[/Quote]
嗯 变红把,主要是想实现成像EXCEL 2007里自带的那个验证重复数据的功能一样(开始-条件格式-突出显示单元格规格-重复值)
回复 点赞
快乐大法师 2012年03月09日


public void AddExpression(int cellR1, int cellC1, int cellR2, int cellC2, string expression)
{
Range cell1;
Range cell2;
cell1 = (Range)_workSheet.Cells[cellR1, cellC1];
cell2 = (Range)_workSheet.Cells[cellR2, cellC2];
Range range = (Range)_workSheet.get_Range(cell1, cell2);
range.Formula = expression;
}


传进去一个拼接的表达是 去判断就行了 重复的怎处理 变蓝么
回复 点赞
ryan_allyes 2012年03月09日
[Quote=引用 7 楼 andyxie2002 的回复:]
用EXCEL自己的公式应该可以解决,要加两列用公式判断,好象是count和countif组合。
[/Quote]
怎么实现的?求过程
回复 点赞
andyxie2002 2012年03月09日
用EXCEL自己的公式应该可以解决,要加两列用公式判断,好象是count和countif组合。
回复 点赞
ryan_allyes 2012年03月09日
[Quote=引用 18 楼 effun 的回复:]

通过Excel的COM组件打开Excel工作薄,然后再一行一行遍历,找出符合你要求的行不就行啦,这个更简单吧。
[/Quote]
你这个碰到数据量大的情况效率低的很。。。我们之前有这么做的 效率根本不能忍
回复 点赞
effun 2012年03月09日
通过Excel的COM组件打开Excel工作薄,然后再一行一行遍历,找出符合你要求的行不就行啦,这个更简单吧。
回复 点赞
ryan_allyes 2012年03月09日
[Quote=引用 16 楼 effun 的回复:]

与C#有何干系?
[/Quote]
我想通过代码实现
回复 点赞
effun 2012年03月09日
与C#有何干系?
回复 点赞
ryan_allyes 2012年03月09日
[Quote=引用 14 楼 effun 的回复:]

添加一个C列,公式:=A1&";"&B1,这样C列的内容就是A和B的组合,然后再判断C列是否有重复就可以了,可用条件格式中的重复值找到C列中重复的单元格,这样对应的A和B列就是重复的。

不知道能不能解决你的问题。
[/Quote]
我试试看,如果通过C#代码怎么实现呢
回复 点赞
josephSC 2012年03月09日
没用过vba, 对你这句: ActiveWindow.SmallScroll Down:=-9 转换不确定,其他可以在线翻译的
回复 点赞
effun 2012年03月09日
添加一个C列,公式:=A1&";"&B1,这样C列的内容就是A和B的组合,然后再判断C列是否有重复就可以了,可用条件格式中的重复值找到C列中重复的单元格,这样对应的A和B列就是重复的。

不知道能不能解决你的问题。
回复 点赞
ryan_allyes 2012年03月09日
[Quote=引用 12 楼 kongwei521 的回复:]

利用VBA可以验证。可以通过宏录制取得VBA代码然后再写成C#
[/Quote]
我试过宏录制转VBA代码 然后就是我3楼发的vb代码 但我不太懂vb代码就不知道如何转
回复 点赞
蝶恋花雨 2012年03月09日
利用VBA可以验证。可以通过宏录制取得VBA代码然后再写成C#
回复 点赞
ryan_allyes 2012年03月09日
[Quote=引用 9 楼 kkxxllasasas 的回复:]
C# code



public void AddExpression(int cellR1, int cellC1, int cellR2, int cellC2, string expression)
{
Range cell1;
Range cell2;
cell1 = (Range……
[/Quote]
拼接的表达式怎么理解?
回复 点赞
ryan_allyes 2012年03月08日
[Quote=引用 4 楼 dygaalove 的回复:]
引用 2 楼 ryan_allyes 的回复:

引用 1 楼 jayinit 的回复:
先说你一句

45分叫高分啊

再补充一句 你看我发的链接那里有100分 加上45分多少分。。。这不算低了把?


这个是不是要用VBA在EXCEL里处理您的要求了...
[/Quote]
是啊 只能通过代码来实现了,能帮我把上面的VBA的代码转成C#的么
回复 点赞
春风十里耶耶耶 2012年03月08日
[Quote=引用 2 楼 ryan_allyes 的回复:]

引用 1 楼 jayinit 的回复:
先说你一句

45分叫高分啊

再补充一句 你看我发的链接那里有100分 加上45分多少分。。。这不算低了把?
[/Quote]

这个是不是要用VBA在EXCEL里处理您的要求了...
回复 点赞
ryan_allyes 2012年03月08日

Sub 重复值()
ActiveWindow.SmallScroll Down:=-9
Columns("B:C").Select
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.Color = -16776961
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub


谁能将这个VB的代码转成C#的啊
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告