Member 12815488 Ответов: 1

Как мне работать с двумя массивами разного размера?


у меня есть следующий код в VBA:
For i = 1 To datalen
If (Sheets("data").Cells(2 + i, 2) >= fusionYmin) And (Sheets("data").Cells(2 + i, 2) <= fusionYmax) Then
            
            dataA = Sheets("data").Cells(2 + i, 3)
            AvgVolts = (Sheets("raster").Cells(raster + 1, 2) + Sheets("raster").Cells(raster + 1, 5)) / 2
            If (A - AvgA) <= threshold Then
                Corr_A(raster) = Corr_A(raster) + 1
            End If
raster = raster + 1


в основном он берет большое количество ячеек, вычисляет, удовлетворяют ли они условию, если истинно, то 1, и добавляет Все 1 для общей суммы. я пытался имитировать код на языке Си#

но то, что я получаю, не совсем правильно (VBA дает мне около 15 средних значений, а я получаю 1200 средних значений с c#). Я могу проверить, что массивы data[] и avgVolts[] действительно возвращают правильные значения

Если кто-нибудь может помочь мне в этом, я был бы очень признателен, и я был бы рад дать столько информации, сколько необходимо для решения этой проблемы.

Что я уже пробовал:

for (j = 0; j < data.Length; j++)
           {
               if (data[j].Y >= Convert.ToSingle(textBox3.Text) && data[j].Y <= Convert.ToSingle(textBox4.Text))
               {
                   for (i = 0; i < numRasters + 2; i++)
                   {
                       if (data[j].A - avgVolts[0][i] <= thresh)
                           corrA[i]++;

                   }
               }
           }

Member 12815488

я добавил к своему вопросу, что VBA делает циклы, но циклы очень далеки от фрагмента кода, поэтому я забыл их

я использую отладчик, он не дает мне никаких оснований полагать, что что-то не так.

1 Ответов

Рейтинг:
0

Patrice T

Код C# имеет 2 цикла, а код VBA - 0 циклов. Я подозреваю, что здесь что-то не так.

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.