我试图弄清楚如何在Excel中的表达式格式化结果.我写
=IF(C30 > B30, "You would save $" & Format(C30-B30, "Currency") & "!", "No savings")
Run Code Online (Sandbox Code Playgroud)
在单元格内,但它不起作用.简单地说,我希望在表达式中格式化货币.
怎么样?
我正在更新几年前构建的旧应用程序,全局命名空间和project.cs文件以及主窗体都被命名为 email2case_winForm
我想改变它(除了以更多的OOP方式重建应用程序以使其更灵活,并且能够重用代码),因此将名称更改为 email2case
但是现在我在编译时遇到了问题,因为在阅读项目的设置和属性时,找不到这些成员.
这是我试图用来读取属性的代码示例.设置:
XElement x = XElement.Load(email2case.Properties.Settings.Default.e2cConfigFile);
Run Code Online (Sandbox Code Playgroud)
并且该编译器的错误是:
'email2case.email2case'不包含'属性'的定义
以下是一个类如何从全局设置中读取:
this.Url = global::email2case.Settings.Default.email2case_sforce_SforceService;
Run Code Online (Sandbox Code Playgroud)
并且该编译器的错误是:
名称空间"email2case"中不存在类型或命名空间名称"设置"(您是否缺少程序集引用?)
我有一种预感,问题是由定义引起的app.Config
,这里是:
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="email2case.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
<section name="email2case.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="email2case.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<email2case.Properties.Settings>
<setting name="email2case_sforce_SforceService" serializeAs="String">
<value>https://login.salesforce.com/servi...</value>
</setting>
<setting name="e2cConfigFile" serializeAs="String">
<value>C:\email2case\data\e2cConfig.xml</value>
</setting>
</email2case.Properties.Settings> …
Run Code Online (Sandbox Code Playgroud) 如果关联值在用作过滤条件的值范围内,我试图返回一系列单元格的总和.例如,使用以下数据表:
Keys Values
A 500
B 300
C 600
D 20
A 150
C 600
Run Code Online (Sandbox Code Playgroud)
以及要汇总的以下键列表:
Sum Keys:
A
D
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种公式化的方式来回归500 + 20 + 150 = 670.
我知道你可以使用多个SUMIF,但是键的数量会根据用户想要过滤的内容而改变,并且编写足够的SUMIF来覆盖最大的现实情况(如10ish)似乎过多,我觉得必须有一个更方便.
在我看来,公式看起来像这样:
=SUMIFS(Values, Keys, OR(Sum Keys), ...(optional other conditions))
Run Code Online (Sandbox Code Playgroud)
我意识到这是一个简单的VBA问题,但我试图避免这种情况,因为电子表格将由具有不同(或没有)VBA知识的人员进行审核.此外,向数据添加指示符列以显示密钥是否在Sum Keys
范围内是不现实的,因为将有多个标签汇总数据,每个标签都有自己的过滤器Key
任何帮助都表示赞赏,但我意识到如果没有VBA,这可能是不可能的.如果需要更多信息,请告诉我.
谢谢!
编辑:谢谢巴里houdini的答案!根据可接受标准的多个范围,查看他的帖子中关于求和的一般解决方案的评论.
我们有一个运行MS Word(隐藏)以打印文档的应用程序。
如果其中一台打印机有问题,则在等待后台处理程序返回“排队”消息时,Word将挂起。
我们发现如果使Word可见(例如,通过在Excel中使用VBA GetObject
和oWordApp.visible=true
),该过程将继续打印其他文档而不会出现问题。
我们希望通过对正在运行的进程中的Word进行VBScript检查来使其更加自动化,如果找到它,使其可见,等待几秒钟,将其隐藏,然后退出...
但是我有一个问题,如果VBScript GetObject
函数尚未运行,它会实例化Word。
如何在不创建单词实例的情况下使用VBScript检查该单词是否正在运行?
这是我在VBScript文件中拥有的代码:
dim oWord, WScriptShell
set oWord = getobject("", "Word.Application")
set WScriptShell = CreateObject("WScript.Shell")
if isobject(oWord) then 'and oWord.Documents.count>0
wscript.echo("Word is running")
oWord.visible=true
WScript.Sleep 1000
oWord.visible=false
else
wscript.echo("Word not running")
end if
Run Code Online (Sandbox Code Playgroud)
所以我应该使用什么来检查word是否在运行而不创建它的实例?
我们有这样的目录结构
..\文档名称_存档\YYYY\月份名称
例如,我们有许多子文件夹(在不同的文档名称文件夹中),名为 \2014\January ... 等
我们想要删除创建日期超过 180 天的所有文件夹及其内容。
我们更愿意只使用批处理文件脚本,但如果我们需要递归搜索,也许 VBScript 更好。
请问最好的办法是什么?
我对Java编程比较陌生,我刚刚开始学习递归,但我似乎无法弄清楚这种方法是如何工作的.
private static int mystery(int w) {
{
if (w < 0) return 0;
int x = mystery (w-2);
return w - x;
}
}
Run Code Online (Sandbox Code Playgroud)
每当输入100这样的变量时,输出50.当输入200时,输出100.当输入2时,输出2.当输入25时,输出13.我不确定这种方法是如何工作的,我正试图绕过它.
我目前查看它的方式,如果你输入100,它将绕过第一个return语句,因为它大于0.当它到达第二行时,它会做100-2,这会带来98,然后转到第三行并执行100 - 98 = 2.然后返回到原始呼叫.
我知道我搞砸了神秘(w-2)方法的第二行.我假设它会再次将w-2的结果带回到方法的开头,并且它将继续一遍又一遍地执行该方法,直到w小于0,无论答案如何都应该再次输出0.但事实并非如此,我不知道为什么.
谁能解释一下这里发生了什么?
我必须从我们的 Web 服务客户端项目中的字符串中删除前导和尾随数字字符,因为出于某种原因,挪威另一端的 Web 服务不会接受Nicosia 1121
作为字符串......
所以我决定构建一个可重用的小函数来做到这一点:
public static string CleanNosFromStr(string text, char charsToRemove)
{
var CleanedStr = text.TrimEnd(charsToRemove).TrimStart(charsToRemove);
return CleanedStr.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我想这样称呼它:
char chars2Remove= new string("0,1,2,3,4, 5,6,7,8,9,0, ").Split(",");
wsSoapBody.CardCity =
myextensions.CleanNosFromStr(aMessage[(int)cardCreate.CardCity].ToString(),chars2Remove);
Run Code Online (Sandbox Code Playgroud)
但它不会编译...
我得到的编译错误是:
'string.String(char*)' 的最佳重载方法匹配有一些无效参数
参数 1:无法从 'string' 转换为 'char*'
我哪里出错了,还有更好的方法吗?
当然我可以只使用
wsSoapBody.CardCity = aMessage[(int)cardCreate.CardCity].ToString().TrimEnd
('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ' ').
TrimStart('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ' ');
Run Code Online (Sandbox Code Playgroud)
但我更喜欢有一些可重复使用的东西。
谢谢
我收到了我不理解的参数计数不匹配错误。
我有以下代码:
Type target = Type.GetType("CPS_Service." + DocumentType);
// Create an instance of my target class
instance = Activator.CreateInstance(target);
foreach (XElement pQ in PQData.Elements())
{
try
{
// populate the member in the instance of the data class with the value from the MQ String
if (target.GetProperty(pQ.Attribute("name").Value) != null)
{
target.GetProperty(pQ.Attribute("name").Value).SetValue(instance, pqRequest[Convert.ToInt32(pQ.Attribute("pos").Value)], null);
}
}
}
PropertyInfo[] properties = target.GetProperties();
foreach (PropertyInfo property in properties)
{
DataColumn col = new DataColumn(property.Name);
col.DataType = System.Type.GetType("System.String");
col.DefaultValue = "";
dt.Columns.Add(col); …
Run Code Online (Sandbox Code Playgroud) 我们的 MS Flow - 更新项目任务中有这个公式...
concat(items('Apply_to_each')['T_x002d_Code']
,'-'
,items('Apply_to_each')['BoxNo']
,'-'
,
items('Apply_to_each')['ID'])
Run Code Online (Sandbox Code Playgroud)
但我们需要在 BoxNo 和 ID 中添加前导零,因此最终结果如下:
A02-00001-000235
我们也尝试过:
substring(concat('000000', variables('ItemID'))
, sub(5, length(variables('BoxNo')))
, add(6, length(variables('ItemID'))))
Run Code Online (Sandbox Code Playgroud)
但没有运气。
BoxNo值可以从 1到99,999,因此我们需要填充最多4 个前导零
ItemID可以从 1 到 999,999 ,因此我们需要填充最多5 个前导零
我们如何才能像这样格式化这些字段呢?
因此,正如过去许多其他人所问的那样,有没有办法超越 Excel 中每个单元格 32k 的限制?
我找到了通过将工作负载拆分为两个不同的 .txt 文件然后合并两个 .txt 文件的方法来做到这一点,但是它是一个巨大的 PITA,而且更多时候我最终只使用 excel 到它的极限,就像我做的那样在 .txt 文件合并后没有时间验证数据,这是一个漫长的过程和乏味的 IMO。
但是我认为,如果存在限制,那是因为它是在 Microsoft 开发 Excel 时编码的,并且由于他们尚未提高它(2013 版本的限制仍然是相同的限制,因此升级没有好处)
我也知道很多人会说,如果您需要在该长度的单个单元格中获取信息,那么您应该很好地使用 ACCESS 我不知道如何使用 ACCESS 或如何像导入 EXCEL 一样将制表符分隔的文件导入到 ACCESS 中,然后即使我能弄清楚,我现在仍然必须弄清楚如何学习所有新命令和他的 EXCEL 等价物,如果有的话。
所以前几天我浏览了一些关于如何克服软件限制的博客文章,我阅读了一些关于逆向工程的内容。
是否可以将 excel 加载到十六进制编辑器中,然后将 32767 的每个实例更改为更大的内容?
c# ×3
excel ×3
vbscript ×2
.net ×1
batch-file ×1
command-line ×1
delete-file ×1
dir ×1
excel-2007 ×1
expression ×1
formatting ×1
java ×1
process ×1
recursion ×1
reflection ×1
substring ×1
trim ×1
winforms ×1