如何更正EXCEL中的#NUM!错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更正EXCEL中的#NUM!错误相关的知识,希望对你有一定的参考价值。
已解决!
参考技术A 该错误表示提供了无效的参数给工作表函数,或是公式的结果太大或太小而无法在工作表中表示。解决办法:确认函数中使用的参数类型正确。如果是公式结果太大或太小,就要修改公式,使其结果在-1×10307和1×10307之间。 参考技术B #NUM 说明你的A1,A2,C1,C2数据有问题!当这些单元格均为空时MEDIAN函数计算会出现错误!你举的例子就是这种情况,B1为0时计算出错。 参考技术C 错误是这一段引起的
CHOOSE((MEDIAN(A1:A2,C2)=A1)+(MEDIAN(A2,C1:C2)=C1)+1,-10,-5,10)
与B1等于多少没有关系.
要确认你的这些涉及单元格是什么值.
可以截图补充一下,截图时包含行号列标和编辑栏,选择公式所在单元格本回答被提问者和网友采纳
当用户返回表单以更正错误时,如何防止浏览器栏中的 URL 发生变化?
【中文标题】当用户返回表单以更正错误时,如何防止浏览器栏中的 URL 发生变化?【英文标题】:How do I prevent URL in browser bar from changing when a user is returned to a form to correct errors? 【发布时间】:2017-05-17 00:16:35 【问题描述】:我正在使用 Rails 5。我有一个页面,用户可以在其中更新他们的个人资料,如果出现问题,他们会返回到该页面
def update
@user = current_user
if @user.update_attributes(user_params)
…
redirect_to url_for(:controller => ‘main’, :action => 'index') and return
end
render 'edit'
end
问题是,当他们返回原始页面时,浏览器栏中的 URL 显示为“http://localhost:3000/users/51”,这不是他们访问的原始 URL(即“http://localhost:3000/users/edit”)。如何使 URL 保持原来的状态?
编辑:这是我运行 rake 路由时产生的结果
edit_users GET /users/edit(.:format) users#edit
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
【问题讨论】:
and return
是一个不好的习惯,因为不能保证像 redirect_to
方法这样的东西会返回逻辑上的真实值。最好使用return redirect_to ...
,这样就不会失败。
通常我建议做@user.update_attributes!
和重定向。如果更新时出现问题,您将收到 ActiveRecord::RecordInvalid
错误,您可以使用 render(action: 'edit')
进行挽救和处理。
阅读您的 cmets 后,我不清楚答案是什么。执行显然是传递到“渲染“编辑”行,因为模型中存在错误,但结果页面上的 URL 与以前不同。
你在edit
行动,所以当然不会一样。解决这个问题的唯一方法是使用一些 URL 技巧,例如 HTML5 历史记录操作,或者在提交之前使用 AJAX 远程进行验证,以确保在提交和重定向之前已经很好了。这通常需要更多的工作。
【参考方案1】:
我认为你的假设是不正确的。您问当用户返回表单以纠正错误时,如何防止浏览器栏中的 URL 发生变化?
答案是:当用户再次查看表单以纠正错误时,浏览器中的 URL 不会改变。因为第一次发送表单时 URL 已经改变了。
使用routes.rb
遵循常见约定,您将拥有以下路线(使用rails routes
列出它们):
GET /users(.:format) users#index
POST /users(.:format) users#create
GET /users/new(.:format) users#new
GET /users/:id/edit(.:format) users#edit
GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
当您向/users/:id/edit
发出GET
请求时,将呈现用户更新表单。但该表单的实际更新请求已发布到PATCH /users/:id
。这意味着浏览器已经使用了另一个 URL。
在update
方法中(记住它已经在URL /users/:id
)你基本上只有两个选择:
-
渲染一些东西。在操作中呈现视图使 URL 保持不变(它仍然是
/users/:id
),但您可以更改为使用分配给 @user
的用户,例如在表单上显示其错误。这是更新失败时 Rails 的默认行为。
您可以将浏览器重定向到另一个 URL(例如返回到 /users/:id/edit
或完全不同的 URL,例如主页)。这会更改浏览器地址栏中的 URL。但是重定向总是会发出一个新的GET
请求,这意味着您会丢失通过post
发送的信息,并且您将丢失当前分配给@user
的User
实例。在GET
之后,用户从数据库中重新加载,因此没有分配错误。在 Rails 中,当用户点击浏览器中的重新加载按钮时,会在更新成功时使用重定向以防止另一个 POST
。
恕我直言,您的问题的答案是:如果不离开 Rails 选择的路径并构建完全不同的路线、控制器和表单设置,您将无法做您想做的事。您需要为GET
和PATCH
(或POST
)请求配置相同的路由。并且控制器方法需要能够以不同的方式处理这两种类型的请求。由于 Rails 2.0 资源路由是首选方式。在 Rails 2.0 之前,你想要的很常见
我的建议是:遵循 Rails 约定。 URL 并不重要,没有人真正关心。我认为不遵循 Rails 约定只是为表单提供另一个 URL 没有任何好处。
【讨论】:
由于我是 Rails 新手,虽然我编辑了我的问题以包括我的“rake routes”,但我并不完全理解答案是什么。至于“网址不重要,没人真正关心”,我关心,这就是我问这个问题的原因。如果您觉得这很愚蠢或愚蠢,请随意抨击/否决我,或者只是不回答,但我的问题仍然存在。【参考方案2】:保持show
和edit
模板相同,这两个目的都可以,编辑时实际上是编辑页面,否则视为显示页面,当有错误可用时,它会显示错误
【讨论】:
【参考方案3】:当我开始使用 Rails 时,我遇到了同样的问题。
但是……
要记住的一点是为什么 Rails 被称为“Rails”。
Rails 之所以称为 Rails,是因为 Rails 的核心设计原则是关于铁路。 Rails 支持约定优于配置,从而使构建网站变得容易,这意味着提供一种且只有一种方式来做事,因此类似于铁路。
作为程序员,当我们选择使用 Rails 时,我们同意坚持使用 Rails 为我们创建的铁轨,以换取简单的编程体验。这就像选择火车而不是汽车一样,您必须保持在轨道上,但作为交换,事情会变得更容易。
因此,每个人的回答很可能都是“不要担心偏离轨道,顺着铁轨走”。
您可以在 Rails 的创建者 DHH 撰写的这篇文章中阅读有关“约定优于配置”和 Rails 设计理念的更多信息 — http://rubyonrails.org/doctrine
【讨论】:
【参考方案4】:使用这个
redirect_to edit_user_path
【讨论】:
更好,redirect_to edit_user_path(current_user)
这样 Rails 会知道哪个用户【参考方案5】:
即使不推荐,也可以为所欲为:
使用render
显示错误
在 routes.rb 中使用 URL /users/edit
创建路由 PUT 或 PATCH
在你的视图中使用这条路线(检查form_for
参数)
将用户 ID 存储在某处:
如果您正在编辑登录用户,我建议您使用会话。
否则,我建议在表单中添加hidden_field_tag
参数
相应地更新控制器中的current_user
函数
【讨论】:
【参考方案6】:我怀疑这可能就是你要找的东西。
redirect_to :edit
http://api.rubyonrails.org/classes/ActionController/Redirecting.html
【讨论】:
虽然我添加了“redirect_to :edit”,但它导致了错误,“undefined method `edit_url' for #<0x007fab10d46968>0x007fab10d46968>【参考方案7】:您可以使用以下语法:
redirect_to :back
【讨论】:
那行不通。尽管 URL 相同,但与模型相关的任何错误消息都不会像以前“渲染”时那样显示在视图中。以上是关于如何更正EXCEL中的#NUM!错误的主要内容,如果未能解决你的问题,请参考以下文章
excel 中计算结果出现"#num!" ,单元格显示为特殊颜色