ช่วงการตั้งชื่อแบบไดนามิกพร้อมข้อมูลการย้ายด้านล่าง

ฉันกำลังพยายามสร้างช่วงที่มีชื่อแบบไดนามิกที่ฉันสามารถใช้สำหรับรายการตรวจสอบข้อมูลได้ ฉันใช้สิ่งเหล่านี้ตลอดเวลา แต่ในกรณีนี้ฉันมีข้อมูลที่อยู่ต่ำกว่าช่วงที่ไม่สามารถนับในช่วงได้ นอกจากนี้ ฉันยังมีมาโครที่แทรกแถวภายในช่วงนี้ซึ่งจำเป็นต้องนับ

ปกติฉันจะใช้สิ่งนี้หากไม่มีสิ่งใดอยู่ในคอลัมน์: =OFFSET($A$1,0,0,COUNTA($A:$A),1)

ฉันต้องเริ่มอันนี้จากหน้าด้วยวิธีเล็กๆ น้อยๆ ดังนั้นฉันจึงใช้: =OFFSET($A$24,0,0,COUNTA($A$24:$A24),1)

โปรดสังเกตว่าฉันได้ลบ "$" ก่อน "24" สุดท้ายในสูตรโดยหวังว่าจะขยายตามนั้น แต่ดูเหมือนจะไม่สอดคล้องกัน

โดยพื้นฐานแล้ว ฉันต้องการให้ช่วง COUNTA รวมเฉพาะช่วงของเซลล์ที่จะเติบโตและหดตัวอยู่เสมอ

ฉันไม่ได้แย่ใน VBA และฉันเปิดรับวิธีแก้ปัญหาที่อาจรวมถึงการวนซ้ำช่วงของเซลล์และหยุดเมื่อถึงเซลล์ที่มีค่าเท่ากับสตริงข้อความบางตัว (ในกรณีนี้จะเป็น .Value = "Request 1" ). แต่ฉันกังวลเล็กน้อยเกี่ยวกับการป้อนแบบฟอร์มหรือ ActiveX Control เนื่องจากเคยทำให้ฉันมีปัญหากับฟังก์ชันการดูและการพิมพ์ในอดีต


person Devin Roberts    schedule 03.10.2017    source แหล่งที่มา


คำตอบ (1)


ฉันใช้โค้ดต่อไปนี้เพื่อสร้างช่วงที่อื่นในสมุดงานซึ่งฉันสามารถใช้เพื่อสร้างช่วงที่มีชื่อแบบไดนามิกได้อย่างง่ายดาย:

Sub UpdateEntities()

Dim i As Long, x As Long

i = 24
x = 1

Sheets("Values").Range("AH:AH").ClearContents

Do While Cells(i, 1).Value <> "REQUEST 1"

Cells(i, 1).Select

If ActiveCell.Value <> "" Then
Sheets("Values").Cells(x, 34).Value = ActiveCell.Value
i = i + 1
x = x + 1
Else
i = i + 1
End If

Loop

End Sub
person Devin Roberts    schedule 03.10.2017