excel如何设置文本对应数值?

假如,A,B俩栏。我在A栏输入商品的名称,B栏对应的商品价格。当我C1栏输入A1A3,在D1栏自动输出B1B2的值,如何设置?如图:当我C2栏输入A2A4,在D2栏自动输... 假如,A,B俩栏。我在A栏输入商品的名称,B栏对应的商品价格。当我C1栏输入A1A3,在D1栏自动输出B1B2的值,如何设置?
如图:当我C2栏输入A2A4,在D2栏自动输出B2B4的值,如何设置?
展开
 我来答
一点设计演示
高粉答主

推荐于2016-05-14 · 职场/教育各类模板,衷于原创
一点设计演示
采纳数:874 获赞数:83609

向TA提问 私信TA
展开全部

1.将数字格式转化为文本格式:TEXT(value, format_text),参数含义:

value 数值(可以是对包含数值的单元格的引用);ormat_text (注:使用双引号括起来作为文本字符串的数字格式,例如, "#,##0.00"

如有下表,F列中都是文本格式分数,现在要将这些分数转化为文本格式:

2.鼠标点到H2单元格输入函数“=TEXT(F2,"###")”点击enter。

3.这种格式在Excel表格中是可以复制引用的,所以用这种方法可以对表格中格式进行批量处理。

4.通过这种方法可以再format_text中输入想要的对应格式。

5.同样可以用函数将文本格式转化为数字格式。可用VALUE(text),VALUE函数只有一个参数text,表示需要转换成数值格式的文本。text参数可以用双引号直接引用文本,也可以引用其他单元格中的文本。如将下图中文本格式生日转化为数值格式。

6.如将C2单元格的文本可是日期转化为数值格式存在D2单元格,可以将鼠标点击C2单元格输入“=VALUE(C2)”后回车。这种格式同样可以复制。

真真真白丁
推荐于2016-03-25 · TA获得超过8521个赞
知道大有可为答主
回答量:4644
采纳率:85%
帮助的人:1740万
展开全部

亲,这个有点复杂,还涉及到您输入的先后顺序,例如是白菜猪肉、还是猪肉白菜……

用VBA合适一些。

按ALT+F11打开VBA编辑窗口,按下图粘贴代码:

 

附件范例也已经上传了,供亲参考。

 

Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count = 1 Then
    If Target.Column = 3 Then
        Dim rg As Object
        Dim st, FBarr() As String
        Dim i, FAarr() As Integer
        i = 0
        For Each rg In Application.Intersect(UsedRange, Columns(1))
            If InStr(1, Target.Value, rg.Value) <> 0 Then
                i = i + 1
                ReDim Preserve FAarr(1 To i), FBarr(1 To i)
                FAarr(i) = InStr(1, Target.Value, rg.Value)
                FBarr(i) = rg.Offset(0, 1).Value
            End If
        Next
        
        If i = 0 Then
            st = ""
        Else
            For i = 1 To UBound(FAarr)
                st = st & Application.Index(FBarr, Application.Match(Application.Small(FAarr, i), FAarr, 0))
            Next
        End If
        
        Target.Offset(0, 1).Value = st
    End If
End If
End Sub

 

追问
真真真白丁 大侠,如果输入:狗肉鱼狗肉 则输出:308,而不是"30830",这如何处理?
追答

兄台所言极是,小弟已修订代码,见附件。

Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count = 1 Then
    If Target.Column = 3 Then
        Dim rg As Object
        Dim st As String
        Dim flag As Integer
        st = Target.Value
        flag = 0
        For Each rg In Application.Intersect(UsedRange, Columns(1))
            If InStr(1, Target.Value, rg.Value) <> 0 Then
                st = Replace(st, rg.Value, rg.Offset(0, 1).Value)
                flag = 1
            End If
        Next
        
        If flag = 0 Then
            st = ""
        End If
        Target.Offset(0, 1).Value = st
    End If
End If
End Sub

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Answer_box
2014-06-21 · TA获得超过1127个赞
知道大有可为答主
回答量:1414
采纳率:100%
帮助的人:428万
展开全部

D2数组公式,按三键  CTRL+SHIFT+回车  结束。

=IF(C2="","",INDEX(B:B,MATCH(1=1,ISNUMBER(FIND(A$2:A$1000,C2)*(A$2:A$1000<>"")),)+1)&LOOKUP(1,0/(FIND(A$2:A$1000,C2)*(A$2:A$1000<>"")),B$2:B$1000))


注意,这样的局限性很大,C2要求必须是要输入两个名称,否则公式出错。

追问
如果输入:白菜猪肉鱼,如何输出:2138?  输入更多的对应名称,如何输出对应的值?
追答
我上面的回答中已说明:
=====注意,这样的局限性很大,C2要求必须是要输入两个名称,否则公式出错。=====

如果是没有规律的,这回答中还有一网友用的VBA解决。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑一笑说一说
科技发烧友

2015-10-11 · 职场办公软件基础应用
笑一笑说一说
采纳数:16868 获赞数:33710

向TA提问 私信TA
展开全部
这个要用VBA了吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式