Вам нужно будет добавить цикл для циклического прохождения каждой строки. Вы сделали часть работы, найдя последний ряд. Вы также установили первую строку на Rngheaders
, но не использовали.
Dim ws As Worksheet
Dim lrow As Long
Dim AmountCol as Long
Dim BillCol as Long
Dim USDCol as Long
Dim Rngheaders As Range
Dim x as long
Set ws = ThisWorkbook.Sheets("CSV Data PR")
Set Rngheaders = ws.Range("1:1")
lrow = ws.Cells(Rows.Count, 1).End(xlUp).Row
AmountCol = Rngheaders.Find(What:="Amount").Column
BillCol = Rngheaders.Find(What:="Bill.qty").Column
USDCol = Rngheaders.Find(What:="In USD").Column
For x= 2 to lrow
ws.Cells(x,USDCol) = ws.Cells(x, AmountCol) * ws.Cells(x, BillCol)
Next x
Это TCP - вы должны обрабатывать данные как поток . Вам не нужно заботиться о том, как поток разбивается на пакеты, или делать предположения о нем.
Если вам нужно получить один «блок» данных, самый простой способ сделать это надежно - это поставить префикс в длину (например, как 32-битное значение). Вы читаете длину (отмечая, что даже эти байты можно можно разделить на несколько пакетов), а затем многократно читаете (синхронно или асинхронно), отмечая, сколько вы читаете каждый раз, пока не прочитаете все данные.
Прочитайте 9.2.4
При анализе протокола прикладного уровня нельзя предполагать, что каждый пакет TCP содержит ровно одно сообщение прикладного уровня. Одно сообщение прикладного уровня можно разбить на несколько пакетов TCP.
добавление к ответу Джона:
int offset = 0;
int imagesize = 512;
byte[] buffer = new byte[512];
tcpChannel.Read(buffer, offset, imagesize);