Excel求助,有没有啥能让两个文字列相乘的办法啊

llNakill-avatar

llNakill

2021-12-06T09:54:17+00:00

大概就是这样,不过任务量有点大,一个一个做有点折磨

[img]https://img.nga.178.com/attachments/mon_202112/11/-7Q2p-g00wK29T3cSk3-h3.jpg[/img]
𝕖𝕜𝕤𝕓𝕠𝕜𝕤𝟙𝟜𝟠-avatar

𝕖𝕜𝕤𝕓𝕠𝕜𝕤𝟙𝟜𝟠

=A1&"-"&A2
A1就是你说的1列
A2是第二列
adarak-avatar

adarak

=A1&-&B1
soul_mega-avatar

soul_mega

没看懂楼主需求,如果是文字连接你试试textjoin函数
apearl52-avatar

apearl52

a1&b1&c1
Māo-avatar

Māo

这叫相乘??
Zakattak-avatar

Zakattak

sumproduct
Blazeron-avatar

Blazeron

公式比较复杂,数组1在A列,数组2在B到D列,结果数组3在E列,公式是INDEX($A:$A,ROUNDDOWN((ROW()-0.5/3,0)+1,1)&"-"&INDEX($B:$D,ROUNDDOWN((ROW()-0.5/3,0)+1,MOD(ROW()-0.5,3)+0.5)
Miyuui-avatar

Miyuui

vba循环[s:ac:哭笑]
Zaat-avatar

Zaat

用数组公式,7楼太长没看,估计是对的[s:ac:羡慕]
こばやし-avatar

こばやし

你这需求和标题都没弄一致啊[s:ac:哭笑]
Bigbee6-avatar

Bigbee6

[img]https://img.nga.178.com/attachments/mon_202112/13/-7Q2p-1r0wZgT3cS11p-nl.jpg[/img]
Sub 组合()
arr = Range("A1:A5").Value
brr = Range("C1:E5").Value
bsum = UBound(brr) * UBound(brr, 2)
[A9].Resize(bsum, 1).Value = ""
crr = [A9].Resize(bsum, 1).Value
k = 1

For i = 1 To UBound(arr)
For j = 1 To UBound(brr, 2)
crr(k, 1) = arr(i, 1) & "-" & brr(i, j)
k = k + 1
Next j
Next i

[A9].Resize(UBound(crr), UBound(crr, 2)) = crr
End Sub

code只需要改前5行的单元格地址("A1:A5","C1:E5",[A9]),以及最后一行的单元格地址[A9]。
比如你有100行数据,从A1-A100,有30列(从C1-AF100),然后想把最终结果放在sheet2的[A1]单元格。

(先保证sheet2是存在的,然后执行代码前,要保证当前激活sheet是数据所在表(比如是sheet1),我偷懒没做数据表选择,默认是读取当前活动表的数据。)
那么,code前5行和最后一行就是
Sub 组合()
arr = Range("A1:A100").Value
brr = Range("C1:AF100").Value
bsum = UBound(brr) * UBound(brr, 2)
sheet2.[A1].Resize(bsum, 1).Value = ""
crr = sheet2.[A1].Resize(bsum, 1).Value
k = 1

For i = 1 To UBound(arr)
For j = 1 To UBound(brr, 2)
crr(k, 1) = arr(i, 1) & "-" & brr(i, j)
k = k + 1
Next j
Next i

sheet2.[A1].Resize(UBound(crr), UBound(crr, 2)) = crr
End Sub
AdamuKD-avatar

AdamuKD

应该要用index函数才能实现你的要求
Jonn-avatar

Jonn

这不叫相乘,一般是叫拼接字符串
Tiagoo-avatar

Tiagoo

看着像是可以用数组运算解决
Barneykiller-avatar

Barneykiller

[quote][tid=29808243]Topic[/tid] Post by [uid=41798075]白云X苍狗[/uid] (2021-12-11 18:00):

大概就是这样,不过任务量有点大,一个一个做有点折磨

[img]https://img.nga.178.com/attachments/mon_202112/11/-7Q2p-g00wK29T3cSk3-h3.jpg[/img][/quote]设辅助列b,c
结果列a
列b的值为=floor((row()-第一行行号)/3)+1
列c的值为=floor((row()-第一行行号)/5)+1
列a的值为=concat(address(列c的值+第一张表第一行行号,1), "-", address(列b的值+第二张表第一行行号,mod(row()-第一行行号-1, 3)+第二张表第一列列序号))
列序号就是1234,对应ABCD列这样。
简单吧
Barneykiller-avatar

Barneykiller

[quote][pid=573243915,29808243,1]Reply[/pid] Post by [uid=1767349]天使小飞飞[/uid] (2021-12-13 18:58):

[img]https://img.nga.178.com/attachments/mon_202112/13/-7Q2p-1r0wZgT3cS11p-nl.jpg[/img]
[code]
Sub 组合()
arr = Range("A1:A5").Value
brr = Range("C1:E5").Value
bsum = UBound(brr) * UBound(brr, 2)
[A9].Resize(bsum, 1).Value = ""
crr = [A9].Resize(bsum, 1).Value
k = 1

For i = 1 To UBoun[/quote]这还要写vba你是多看不起Excel……
llNakill-avatar

llNakill

Reply to [pid=573246745,29808243,1]Reply[/pid] Post by [uid=41689247]安艺恵[/uid] (2021-12-13 19:12)我一开始就是觉得这是个一维的数组和二维的数组进行元素的组合。不过我有限的计算机知识就只到这里了,大学选修课学过的全还给老师了