Excel VBA中使用VLOOKUP函数

Function VBVlookup(code As Integer) As String
    On Error Resume Next
    
    Dim result As String
    Dim sheet As Worksheet
    Set sheet = ActiveWorkbook.Sheets("维修人员表")
    
    result = Application.WorksheetFunction.VLookup(code, sheet.Range("A:B"), 2, False)
    VBVlookup = result
End Function

另外附上VLOOKUP,查找不到不显示N/A的函数

=IF(ISERROR(VLOOKUP(A5,项目代码表!A:E,2,FALSE)),"",(VLOOKUP(A5,项目代码表!A:E,2,FALSE)))

JRE升级导致Elasticsearch故障处理

今天发现Elasticsearch服务故障,重启后还是不行,具体日志如下:

[2017-02-10 10:01:32] [info]  [32412] Commons Daemon procrun (1.0.15.0 64-bit) started
[2017-02-10 10:01:32] [info]  [32412] Running 'elasticsearch-service-x64' Service...
[2017-02-10 10:01:32] [info]  [18112] Starting service...
[2017-02-10 10:01:32] [error] [18112] Failed creating java C:\Program Files\Java\jre1.8.0_111\bin\server\jvm.dll
[2017-02-10 10:01:32] [error] [18112] 系统找不到指定的路径。
[2017-02-10 10:01:32] [error] [18112] ServiceStart returned 1
[2017-02-10 10:01:32] [error] [18112] 系统找不到指定的路径。

原因分析:

去硬盘找了一下的确没有这个文件了,倒是在 C:\Program Files\Java\jre1.8.0_121\bin\server 路径下发现了此文件

应该是Java自动更新后把老版的文件Delete掉导致的

解决办法:

去cmd执行指令

service manager elasticsearch-service-x64

把路径改对即可

中国历朝首都一览

商——公元前1600年—公元前1046年 

西亳:(今河南洛阳偃师西) 

亳:(今河南郑州)

嚣:(今河南郑州西北) 

相:(今河南濮阳北、安阳内黄南;一说今河南安阳洹水北) 

邢:(今河北邢台) 

庇:(今山东郓城北、梁山西南) 

奄:(今山东曲阜) 

殷:(今河南安阳)

朝歌:(今河南淇县) 

 

西周——公元前1046年—公元前771年

镐京:(今陕西西安长安西北) 

成周:(今河南洛阳) 

犬丘:(今陕西咸阳兴平东南)

南郑:(今陕西渭南华县) 

 

东周——公元前770年—公元前256年 

雒邑:(河南洛阳) 

 

春秋战国时期——公元前770年—公元前221年

秦:西犬丘(今甘肃天水西南)、平阳(今陕西宝鸡东南)、雍(今陕西凤翔东南)、泾阳(今陕西泾阳西北)、栎阳(今陕西西安临潼东北)、咸阳(今陕西咸阳东北) 

晋:绛(今山西翼城东南)、新田(今山西侯马)、屯留(今山西屯留县南)、端氏(今山西沁水东北) 

楚:郢(今湖北江陵纪南城)、陈丘(今河南淮阳)、巨阳(今安徽太和东南)、寿春(今安徽寿县西南) 

齐:临淄(今山东淄博) 

燕:临易(今河北雄县)、蓟(今北京城���南) 

宋:商丘(今河南商丘南)、睢阳(今河南商丘西南) 

鲁:曲阜(今山东曲阜) 

郑:新郑(今河南新郑) 

赵:晋阳(今山西太原)、中牟(今河南鹤壁西)、邯郸(今河北邯郸) 

魏:安邑(山西夏县西北)、大梁(今河南开封) 

韩:平阳(今山西临汾西南)、宜阳(今河南洛阳宜阳西)、阳翟(今河南禹州)、新郑(今河南新郑) 

卫:沫(今河南淇县)、曹(今河南安阳滑县东)、楚丘(今河南安阳滑县东北)、帝丘(今河南濮阳西南) 

陈: 陈(今河南淮阳) 

蔡:上蔡(今河南上蔡) 

曹: 陶(今山东定陶) 

吴: 吴(今江苏苏州) 

越:会稽(今浙江绍兴) 

杞: 杞(今河南开封杞县) 

秦——公元前221年—公元前207年  咸阳 :(今陕西咸阳东北) 

西楚:(公元前207年—公元前202年) 彭城 :(今江苏徐州)

南越:(公元前203年—公元前110年)  

番禺 :(今广东广州) 

 

西汉——公元前202年—公元前8年

洛阳: (今河南洛阳东)公元前202年—公元前202年 

栎阳 :(今陕西西安临潼东北)公元前202年—公元前200年 

长安 :(今陕西西安西北)公元前200年—公元8年 


新:(公元8年—公元23年)

长安: (今陕西西安西北)公元8年—公元23年 

汉更始:(公元23年—公元25年) 

洛阳 :(今河南洛阳东)公元23年—公元24年

长安:(今陕西西安西北)公元24年—公元25年 

 

东汉——公元25年—公元220年

雒阳:(今河南洛阳东)公元25年—公元190年 

长安:(今陕西西安西北)公元190年—公元195年 

许昌:(今河南许昌)公元196年—公元220年 

 

三国时期——公元220年—公元280年


魏:(公元220年—公元265年) 

许昌:(今河南许昌)公元220年—公元221年

洛阳:(今河南洛阳东)公元221年—公元265年 

 

蜀汉:(公元221年—公元263年) 

成都:(今四川成都) 


吴:(公元229年—公元280年) 

建业:(今江苏南京)公元229年—公元265年

武昌:(今湖北武汉)公元265年—公元267年

建业:(今江苏南京)公元267年—公元280年 

 

西晋——公元265年—公元316年

洛阳:(今河南洛阳东)公元265年—公元313年 

长安:(今陕西西安西北)公元313年—公元316年 

 

东晋——公元317年—公元420年

建康:(今江苏南京) 

 

南北朝时期——公元420年—公元589年

[南朝] 


宋:(公元420年—公元479年):建康(今江苏南京) 


齐:(公元479年—公元502年):建康(今江苏南京) 


梁:(公元502年—公元557年) 

建康: (今江苏南京)公元502年—公元552年

江陵  :(今湖北江陵)公元552年—公元554年

建业  (今江苏南京)公元554年—公元557年 

 

陈:(公元557年—公元589年):建康(今江苏南京)


[北朝] 

 

北魏:(公元386年—公元534年) 

盛:(今内蒙古和林格尔北)公元386年—公元398年

平城: (今山西大同)公元398年—公元493年

洛阳:(今河南洛阳东)公元493年—公元534年 

 

东魏:(公元534年—公元550年):邺(今河北临漳西南、河南安阳东北) 

北齐:(公元550年—公元577年):邺(今河北临漳西南、河南安阳东北) 

西魏:(公元535年—公元557年):长安(今陕西西安西北) 

北周:(公元557年—公元581年):长安(今陕西西安西北) 

 

隋——公元581年—公元619年

大兴:(今陕西西安)公元581年—公元605年 

洛阳:(今河南洛阳)公元605年—公元619年 

 

唐——公元618年—公元907年 

西京长安:(陕西西安)公元618年—公元904年 

东都洛阳:(河南洛阳)公元657年—公元736年(与西京并重时期) 

 

五代十国时期——公元907年—公元960年


[五代] 


后梁:(公元907年—公元923年) 

开封:(今河南开封)公元907年—公元909年 

洛阳:(今河南洛阳)公元909年—公元913年 

开封:(今河南开封)公元913年—公元923年 


后唐:(公元923年—公元936年) 

洛阳:(今河南洛阳) 


后晋:(公元936年~公元946年) 

洛阳:(今河南洛阳)公元936年—公元937年 

开封:(今河南开封)公元937年—公元946年 


后汉:(公元947年—公元950年) 

开封:(今河南开封) 


后周:(公元951年—公元960年) 

开封:(今河南开封) 


[十国] 


前蜀 :成都(今四川成都) 

后蜀: 成都(今四川成都) 

楚 :潭州长沙府(今湖南长沙) 

南汉 : 广州兴王府(今广东广州) 

闽: 福州长乐府(今福建福州) 

吴越 :杭州西府(今浙江杭州) 

吴: 扬州江都府(今江苏扬州) 

南唐 :西都江宁府(今江苏南京)、东都江都府(今江苏扬州) 

南平 :(荆南):荆州江陵府(今湖北江陵) 

北汉: 太原(今山西太原)

 

北宋——公元960年—公元1127年 

东京:(今河南开封) 

 

南宋——公元1127年—公元1279年

南京:(今江苏南京)公元1129年—公元1138年 

临安:(今浙江杭州)公元1138年—公元1276年 

 

少数民族政权 

 

辽:(公元907年—公元1125年) 

上京临潢府:(今内蒙古巴林左旗)公元918年—公元1007年 

中京大定府:(今内蒙古宁城西南)公元1007年—公元1125年 

 

大理:(今云南大理)(公元937年—公元1253年)

 

西夏:(公元1038年—公元1227年)兴庆府(中兴府)(今宁夏银川东南) 

 

金:(公元1115年—公元1234年) 

上京会宁府:(今黑龙江阿东城东南)公元1115年—公元1153年 

中都大兴府:(今北京城西南)公元1153年—公元1214年 

南京开封府:(今河南开封)公元1214年—公元1234年 

 

西辽:(公元1132年—公元1218年)八剌沙衮(别称虎思斡耳朵、虎思斡耳朵)(今吉尔吉斯斯坦托克马克东南,即唐代碎叶城) 

 

元——公元1271年—公元1368年

大都:(元冬都,今北京)公元1271年—公元1368年 

上都:(元夏都,今内蒙锡林浩特南)公元1263年—公元1368年 

 

明——公元1368年—公元1644年

南京:(今江苏南京)公元1368年—公元1420年 

北京:(今北京)公元1420年—公元1644年 

 

清——公元1616年—公元1912年

兴京:(今辽宁新宾西)公元1616年—公元1621年 

辽阳:(今辽宁辽阳)公元1621年—公元1625年 

盛京:(今辽宁沈阳)公元1625年—公元1644年 

北京:(今北京)公元1644年—公元1912年

Excel VBA 删除自定义样式宏

Sub Del_YS()
'删除自定义样式
For Each s In ActiveWorkbook.Styles
'MsgBox s.Name
On Error Resume Next
If Len(s.Name) > 0 And s.Name <> "Normal" Then
s.Delete
End If
If Err.Number > 0 Then
e = "Error occour on deleting Style named " & s.Name
e = e & vbCrLf & "Err:" & Err.Number & "->" & Err.Description
MsgBox e
Err.Clear
End If
Next
End Sub

 

微信暗码你知道么?教你如何开启微信多聊天窗口

微信现在已经深入千家万户,人人必备,但是,你真的会玩微信么?你是否有过正在看朋友圈,但是消息来了,必须退出朋友圈的无奈?你是否有过正在看订阅号文章,但是消息来了,必须退出,而看完消息后又必须重新进入的尴尬?OK,今天神哥教你一项神技,开启微信自带的隐藏功能——多窗口功能。
这个功能是非常牛逼的,但是,不知道为啥企鹅公司的工程师把他藏那么深。。。
开启以后,你就可以让微信打开多个窗口了:聊天、看朋友圈、看公众号都不耽误!

开启该功能无毒无害无任何BUG,无需安装任何软件,无需修改任何权限,仅仅需要一个暗码即可。
本人在最新的微信6.3.15版本亲测可行。
要开启该功能也是比较简单的,仅需在任意聊天窗口输入:

//multiwebview

然后点击发送,最后重启下手机就OK了。

而要想关闭这个功能,只需再次输入一次以上指令,然后重启手机,即可关闭。OK,今天教程就到这了,大家快去试试吧!

在ASP.Net Core RC2中使用XUnit单元测试

建立项目

在现有的解决方案中,添加一个.Net Core类库项目

修改project.json

增加xunit相关包的引用

例如:

	"testRunner": "xunit",
	"dependencies": {
		"Microsoft.NETCore.App": {
			"version": "1.0.0-rc2-3002702",
			"type": "platform"
		},
		"xunit": "2.1.0",
		"xunit.runner.visualstudio": "2.1.0",
		"dotnet-test-xunit": "1.0.0-rc2-build10025"
	},

如果你不需要与VS IDE的单元测试集成,则可以删掉 xunit.runner.visualstudio 一行

错误提示xunit不支持netstandard1.5

这时需要把 frameworks 修改为

	"frameworks": {
		"netcoreapp1.0": {
			"imports": [
				"dotnet5.6",
				"dnxcore50",
				"portable-net45+win8"
			]
		}
	},

书写单元测试方法

		[Fact]
		public void PassingTestDotnet()
		{
			Assert.Equal(1, 1);
		}

使用cli进行单元测试

dotnet test

其他补充

如果你要测试的项目有使用到 appsettings.json 等配置文件,则需要把该文件复制一份到 UnitTest 项目中,然后修改单元测试类的构造函数

		public UnitTest()
		{
			var builder = new ConfigurationBuilder()
				.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
				.AddEnvironmentVariables();

			Startup.Configuration = builder.Build();
		}

修改后可能还会报找不到 appsettings.json 文件的IO异常,此时则需要修改 project.json 文件,让构建发布时把该文件一起发布

	"publishOptions": {
		"include": [
			"appsettings.json"
		]
	},
	"buildOptions": {
		"copyToOutput": [
			"appsettings.json"
		]
	}

TFS测试集成

新建一个文件 RunDotnetTest.ps1

Set-ExecutionPolicy unrestricted -Scope CurrentUser -Force
dotnet test $PSScriptRoot\微信企业号\src\UnitTest -xml $PSScriptRoot\微信企业号\src\UnitTest\testresults.xml

注意修改为自己项目的路径

参照 升级.Net Core RC2的那些事(四)——TFS2015的CI集成 一文中的方法,把此PowerShell文件添加为生成步骤

然后再添加一个 发布测试结果 的生成步骤

相关设置如下:

保存生成定义后,单击 为生成排队 ,可以看看效果

记一次Win10蓝屏异常修复

最近我的Surface Pro 2升级到Win10 RS1 14342后频繁出现蓝屏现象,错误提示Driver_Corrupted_Expool

初步估计是驱动不兼容的问题,但Surface是微软的亲儿子啊,我的固件也是最新的

抱着怀疑的态度,于是用 Verifier 指令来验证驱动程序

最终发现是一个名为 kavbootc64.sys 的驱动程序文件与系统不兼容

Google了一下此文件的来历,原来是 金山毒霸

我的Win10从来都是裸奔的,回想了一下应该是还是Win8的时候装的某个软件附带的金山全家桶,但我当时发现有后台安装马上就卸载删除了的,想不到还有残余一直追随系统升级带到现在,如果不是Win10 RS1改了底层API导致蓝屏现象还真不会被发现,这样的做法实在令人胆寒。

进入安全模式,执行命令

del  "C:\Windows\System32\drivers\kavbootc64.sys"

重启后,就腰不酸了,腿不疼了,也不再蓝屏了

上述案例再次说明,现在的杀毒软件才是最毒的,亲们一定要擦亮自己的双眼

升级.Net Core RC2的那些事(四)——TFS2015的CI集成

这篇应该是这个系列的最后一篇了

配置生成代理

配置dotnet cli环境

这步,需要在生成代理的机器上配置cli环境,与本地配置方法一致,可以自行Google

下载及参考地址:

https://www.microsoft.com/net/core#windows

配置环境变量

在生成代理的机器上

  1. 右键 此电脑 (我的电脑)
  2. 点 属性
  3. 点击 高级系统设置
  4. 点击 环境变量 按钮
  5. 新建 一个新的环境变量 名称为:ASP.NET_Core;值为:RC2;如图
  6. 重启生成代理

确认是否设置成功

  1. 登录TFS
  2. 点击 管理项目 (即 右上方的齿轮)
  3. 点击 DefaultCollection (或者你的其他团队项目名)
  4. 点击 代理队列
  5. 看到 代理 -> 功能中 有刚才设置的RC2,就算成功了,如图

此步,主要是对安装配置过RC2的代理进行区分,让TFS进行CI时能选择到有RC2环境的机器

生成定义

这里我们新建一条生成定义,用 空模板 就好

生成步骤

首先,我们需要通过cli把包还原出来

点击 添加生成步骤,实用工具 -> 命令行

设置项中

工具填:dotnet

参数填:restore

其实相当于命令 dotnet restore

接着,我们需要把nuget的包打包,由于涉及几个项目,我这里使用的是PowerShell

点击 添加生成步骤,实用工具 -> PowerShell

脚本文件名为:RunPack.ps1

内容为:

dotnet pack LSW.Weixin\src\LSW.Weixin -c release
dotnet pack LSW.Weixin\src\LSW.Weixin.MP -c release
dotnet pack LSW.Weixin\src\LSW.Weixin.MP.MvcExtension -c release
dotnet pack LSW.Weixin\src\LSW.Weixin.QY -c release

PS:LSW.Weixin\src\LSW.Weixin 这些是我的项目的存储库相对路径,project.json的对应文件夹,可参照修改。我这里完全是把PowerShell当批处理用了,如果有这方面路过的PowerShell大神看到,有好的建议,还请赐教

然后,需要对ASP.Net Core的项目进行发布,同样

点击 添加生成步骤,实用工具 -> PowerShell

脚本文件名为:RunPublish.ps1

内容为:

dotnet publish 微信企业号\src\分销系统 -r win8-x64 -c release
dotnet publish 微信企业号\src\微信企业号 -c release

同样需要修改对应的路径

这里还需要注意的是,由于项目名存在中文,这里的PowerShell脚本需要用 GBK 编码保存,用 UTF-8 编码的话会乱码报错

最后是添加 复制并发布生成项目 的生成步骤

这个和原来一样就不说了

PS:以上的步骤我没有使用 dotnet build 是因为 dotnet pack 和 dotnet publish 都会执行一次build操作,就没必要加这一步了

存储库设置

选自己对应项目的 Git 分支

常规设置

在常规设置选项卡中,增加一个RC2的需求条件,如图

其他选项

根据自己的喜好设置吧

测试生成定义

设置完成后点击 保存

然后点击 为生成排队 就可以测试一下生成定义了

其他补充

TFS的cli会把一些编译警告,当成错误,导致CI无法顺利通过

这里有两种处理办法

1、按标准修改代码,让警告不出现
2、修改project.json,忽略掉相应的警告,具体位置在 buildOptions 配置节 nowarn 下
	"buildOptions": {
		"emitEntryPoint": true,
		"preserveCompilationContext": true,
		"nowarn": [ "CS0168", "CS0169", "CS1998" ]
	},
CI完成后的自动发布Azure、FTP什么的这些没改,可以参考其他文章进行配置