【杂七杂八】excel中根据RTL信号位宽生成拼接取位

前言

作为一个不务正业的芯片前端,总会遇到掉奇奇怪怪的需求,就比如题目这个啊,我写完之后就觉得非常的拗口。那么具体的需要是啥呢?就是比如说有了下面这个excel表:

信号名width
sig03
sig110
sig214
sig320
sig48

要直接做一列生成前面几个信号在整体信号中的取位信息,简单来说就是这样:

信号名widthlocal
sig03[2:0]
sig110[12:3]
sig214[26:13]
sig320[46:27]
sig48[54:47]

并且呢,当前面的信号位宽调整后,后面也要自己跟着动,比如说这样:

信号名widthlocal
sig03[2:0]
sig110[12:3]
sig2111[123:13]
sig320[143:124]
sig48[151:144]

emmmm,是不是看起来超集的简单并且有条理了,看起来的确是非常的简单。

解决方法

我试了好多方法一筹莫展啊,这玩意看起来简单实现还挺烦的,所以不得已呢我借助了中间变量,先加两列再说:


这两列的实现就非常简单了,不需要解释。有了这两行之后呢,你看看这加起新的一列不就简单很多了么,直接找好对应的列,一写这不就成了么:

=[C3:D3]

emmmm

就很离谱,为啥我没钱买正版的excel呢?这不是重点,重点是公式为啥这么不智能呢,于是还要上手改。

我查到了TEXT函数可以把数字转成字符,那么怎么把字符拼接呢?这个时候就全凭灵光乍现了~之前写VBA的时候我记得比较清楚,字符串的拼接是用&来做的,我试了下还真的是一样的:

="["&TEXT((C3),"###")&":"&TEXT(D3,"###")&"]"

改成这个样子后可以说非常完美,但是美中不足是,数字0会被忽视不打印,因此呢第一行简化一下:

="["&TEXT((C2),"###")&":"&"0]"

 惨兮兮的自己写0吧,反正能用就行呗。

于是乎最后的效果就出现了:

信号名widthMSBLSBlocal
sig0320[2:0]
sig110123[12:3]
sig211112313[123:13]
sig320143124[143:124]
sig48151144[151:144]
sig54155152[155:152]
sig65160156[160:156]
sig74164161[164:161]
sig85169165[169:165]
sig97176170[176:170]

哎,随便你怎么拉怎么加,都是无脑适配的~可以说没有任何问题。那么反过头来一看,比原始需求好像多了两列,那怎么办呢?

我要是甲方可以说是非常满意,甚至想请吃饭!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼德兰的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值