如何在常规MS excel表达式

时间:2017-03-31 13:47:03

标签: excel vba excel-vba for-loop foreach

我的研究表明我需要使用Visual Basic。我是一名程序员/开发人员,但从未使用过VB,所以如果有人能把它愚蠢下去,我们将不胜感激。

这是我的工作excel功能: =IF(MATCH(1,E1:DP1,0),D1,FALSE) 我想循环其中的一些数字,以便: =IF(MATCH(141,E1:DP378,0),D378,FALSE)

然后接受我的答案(这将是字符串,因为D列是所有字符串,excel文件的其余部分是数字) = CONCAT

结束目标:根据表格中的数据填充141个String数组。

我继续这样做了第一次尝试VBA:

Sub myFunc()

'Initialize Variables
Dim strings As Range, nums As Integer, answer() As Variant, listAnswers() As Variant

'set variables
strings = ("C1:C378")
nums = 141
i = 0
j = 0
ReDim Preserve answer(i)
ReDim Preserve listAnswers(j)
'answer() = {""}

'for each in nums
For counter = 0 To nums
    ReDim Preserve listAnswers(0 To j)
    'set each list of answers 
    listAnswers(i) = Join(answer(), "insertJSONcode")
    j = j + 1

    'for each in Stings
    For Each cell In strings
        If cell <> "" Then
            ReDim Preserve answer(0 To i)
            answer(i) = 'essentially this: (MATCH(2,E1:DP1,0),D1,FALSE)
            i = i + 1
        end If

    next cell 'end embedded forEach

Next LCounter 'end for loop

'is this possible? or wrong syntax?
Range("A:A").Value = listAnswers() ' should print 141 arrays from A1 to A141

End Sub

编辑:
重要提示 我不需要按名称调用工作表。我没有成功地在A列中通过excel表成功写入整数值。

另外,我写的VBA从来没有打算工作,我知道它至少在答案(i)应该写东西的地方被打破了。我只是把那些代码放在那里表明我能够至少能够进入适当逻辑的距离,并证明我已经付出了一些努力来解决问题并给出一个粗略的起点。

这是excel格式的图像。 C列下降到378,E到DP列出的数字由数据库填充。它由空白单元格和1到141之间的数字组成。

Excel Format
回顾我的if语句:

=IF(MATCH(2,E2:DP2,0),D2,FALSE)

如果我要将其完全输入到单元格B2中,它将输出正确的答案&#34; text2&#34;。这是整洁的,但我需要写出每个文本2的实例,然后CONCAT那些结果。到目前为止很容易,我可以将它一直拖到B列,然后将所有的&#34;文本&#34;一列中的字符串,CONCAT那列,答案就在那里。但是,我不需要#2,我需要1到141之间的每个数字。另外,我想避免在每个数字的顶部写入141个带有CONCAT的列。

0 个答案:

没有答案