엑셀 VBA 재고관리 코드를 작성중인데, 항목이 더이상 늘어나지 않습니다.

VBA
작성자
가을전어
작성일
2021-10-04 21:05
조회
809
엑셀버전 : 엑셀2010 이전

운영체제 : 윈도우10

 

이번에 열심히 코드를 만들어보고 있는중입니다.

설명처럼 작성중인데, DB=get_DB(shtcustomer)로 불러올수 있는 항목의 갯수 제한이 있는건가요?

시트에서 목록은 총 9가지인데, 현재 함수로 불러온 DB자료는 8가지입니다. 혹시 어느부분이 잘못된건지 알 수 있을까요?

함수는 기본내장함수를 그대로 사용하였습니다.

스크랩
공유
회원등급 : 4레벨
포인트 : 235 EP
총질문 : 9 개 (마감율 : 67%)
채택답변 : 0 개
전체 4

  • 2021-10-04 21:09

    @가을전어 님 vba 은 코드를 봐야 알수 있습니다. 코드가 어떻게 구성이 된지 모르면 해결방법도 난감합니다.

    코드를 첨부하시면 고수님들이 도와주실거 같습니다. ^^


    • 2021-10-04 23:55

      @이하늘

      Option Explicit
      Option Compare Text
      '########################
      ' 특정 워크시트에서 앞으로 추가해야 할 최대 ID번호 리턴 (시트 DB 우측 첫번째 머릿글)
      ' i = Get_MaxID(Sheet1)
      '########################
      Function Get_MaxID(WS As Worksheet) As Long
      With WS
          Get_MaxID = .Cells(1, .Columns.Count).End(xlToLeft).Value
          .Cells(1, .Columns.Count).End(xlToLeft).Value = .Cells(1, .Columns.Count).End(xlToLeft).Value + 1
      End With
      End Function
      '########################
      ' 워크시트에 새로운 데이터를 추가해야 할 열번호 반환
      ' i = Get_InsertRow(Sheet1)
      '########################
      Function Get_InsertRow(WS As Worksheet) As Long
      With WS:    Get_InsertRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1: End With
      End Function
      '########################
      ' 시트의 열 개수 반환 (이번 예제파일에서만 사용)
      ' i  = Get_ColumnCnt(Sheet1)
      '########################
      Function Get_ColumnCnt(WS As Worksheet, Optional Offset As Long = -1) As Long
      With WS:    Get_ColumnCnt = .Cells(1, .Columns.Count).End(xlToLeft).Column + Offset: End With
      End Function
      '########################
      ' 시트에서 특정 ID 의 행 번호 반환 (-> 해당 행 번호 데이터 업데이트)
      ' i = get_UpdateRow(Sheet1, ID)
      '########################
      Function get_UpdateRow(WS As Worksheet, ID)
      Dim i As Long
      Dim cRow As Long
      With WS
          cRow = Get_InsertRow(WS) - 1
          For i = 1 To cRow
              If .Cells(i, 1).Value = ID Then get_UpdateRow = i: Exit For
          Next
      End With
      End Function
      
      
      '########################
      ' 특정 시트의 DB 정보를 배열로 반환 (이번 예제파일에서만 사용)
      ' Array = Get_DB(Sheet1)
      '########################
      Function Get_DB(WS As Worksheet, Optional NoID As Boolean = False, Optional IncludeHeader As Boolean = False) As Variant
      
      Dim cRow As Long
      Dim cCol As Long
      Dim offCol As Long
      
      If NoID = False Then offCol = -1
      
      With WS
          cRow = Get_InsertRow(WS) - 1
          cCol = Get_ColumnCnt(WS, offCol)
          Get_DB = .Range(.Cells(2 + Sgn(IncludeHeader), 1), .Cells(cRow, cCol))
      End With
          
      End Function
      '########################
      '특정 시트에서 지정한 ID의 필드 값 반환 (이번 예제파일 전용)
      ' Value = Get_Records(Sheet1, ID, "필드명")
      '########################
      Function Get_Records(WS As Worksheet, ID, Fields)
      
      Dim cRow As Long: Dim cCol As Long
      Dim vFields As Variant: Dim vField As Variant
      Dim vFieldNo As Variant
      Dim i As Long: Dim j As Long
      
      
      cRow = Get_InsertRow(WS) - 1
      cCol = Get_ColumnCnt(WS)
      
      If InStr(1, Fields, ",") > 0 Then vFields = Split(Fields, ",") Else vFields = Array(Fields)
      ReDim vFieldNo(0 To UBound(vFields))
      
      With WS
          For Each vField In vFields
              For i = 1 To cCol
                  If .Cells(1, i).Value = Trim(vField) Then vFieldNo(j) = i: j = j + 1
              Next
          Next
      
          For i = 2 To cRow
              If .Cells(i, 1).Value = ID Then
                  For j = 0 To UBound(vFieldNo)
                      vFieldNo(j) = .Cells(i, vFieldNo(j))
                  Next
                  Exit For
              End If
          Next
          
      Get_Records = vFieldNo
      
      End With
      
      End Function
      
      '########################
      ' 시트에 새로운 레코드 추가 (반드시 첫번째 값은 ID, 나머지 값 순서대로 입력)
      ' Insert_Record Sheet1, ID, 필드1, 필드2, 필드3, ..
      '########################
      Sub Insert_Record(WS As Worksheet, ParamArray vaParamArr() As Variant)
      
      Dim cID As Long
      Dim cRow As Long
      Dim vaArr As Variant: Dim i As Long: i = 2
      
      With WS
          cRow = Get_InsertRow(WS)
          If InStr(1, .Cells(1, 1).Value, "ID") > 0 Then
              cID = Get_MaxID(WS)
              .Cells(cRow, 1).Value = cID
              For Each vaArr In vaParamArr
                  .Cells(cRow, i).Value = vaArr
                  i = i + 1
              Next
          Else
              For Each vaArr In vaParamArr
                  .Cells(cRow, i - 1).Value = vaArr
                  i = i + 1
              Next
          End If
          
      End With
      
      End Sub
      '########################
      ' 시트에서 ID 를 갖는 레코드의 모든 값 업데이트 (반드시 첫번째 값은 ID여야 하며, 나머지 값을 순서대로 입력)
      ' Update_Record Sheet1, ID, 필드1, 필드2, 필드3, ...
      '########################
      Sub Update_Record(WS As Worksheet, ParamArray vaParamArr() As Variant)
      
      Dim cRow As Long
      Dim i As Long
      Dim ID As Variant
      
      If IsNumeric(vaParamArr(0)) = True Then ID = CLng(vaParamArr(0)) Else ID = vaParamArr(0)
      
      With WS
          cRow = get_UpdateRow(WS, ID)
          
          For i = 1 To UBound(vaParamArr)
              If Not IsMissing(vaParamArr(i)) Then .Cells(cRow, i + 1).Value = vaParamArr(i)
          Next
          
      End With
      
      End Sub
      '########################
      ' 시트에서 ID 를 갖는 레코드 삭제
      ' Delete_Record Sheet1, ID
      '########################
      Sub Delete_Record(WS As Worksheet, ID)
      
      Dim cRow As Long
      
      If IsNumeric(ID) = True Then ID = CLng(ID)
      
      With WS
          cRow = get_UpdateRow(WS, ID)
          .Cells(cRow, 1).EntireRow.Delete
      End With
      
      End Sub
      
      '########################
      ' 배열의 외부ID키 필드를 본 시트DB와 연결하여 해당 외부ID키의 연관된 값을 배열로 반환
      ' Array = Connect_DB(Get_DB(Sheet1),2,Sheet2, "필드1, 필드2, 필드3")
      '########################
      Function Connect_DB(DB As Variant, ForeignID_Fields As Variant, FromWS As Worksheet, Fields As String, Optional IncludeHeader As Boolean = False)
      
      Dim cRow As Long: Dim cCol As Long
      Dim vForeignID_Fields As Variant: Dim vForeignID_Field As Variant
      Dim ForeignID As Variant
      Dim vFields As Variant: Dim vField As Variant
      Dim vID As Variant: Dim vFieldNo As Variant
      Dim Dict As Object
      Dim i As Long: Dim j As Long
      Dim AddCols As Long
      
      
      cRow = UBound(DB, 1)
      cCol = UBound(DB, 2)
      If InStr(1, Fields, ",") > 1 Then
          AddCols = Len(Fields) - Len(Replace(Fields, ",", "")) + 1
          vFields = Split(Fields, ",")
      Else
          AddCols = 1
          vFields = Array(Fields)
      End If
      
      ReDim Preserve DB(1 To cRow, 1 To cCol + AddCols)
              
      Set Dict = Get_Dict(FromWS)
      vID = Dict("ID")
      
      ReDim vFieldNo(0 To UBound(vFields))
      
      For Each vField In vFields
          For i = 1 To UBound(vID)
              If vID(i) = Trim(vField) Then vFieldNo(j) = i: j = j + 1
          Next
      Next
      
      If InStr(1, ForeignID_Fields, ",") > 0 Then vForeignID_Fields = Split(ForeignID_Fields, ",") Else vForeignID_Fields = Array(ForeignID_Fields)
      
      For Each vForeignID_Field In vForeignID_Fields
          For i = 1 To cRow
              If IncludeHeader = True And i = 1 Then ForeignID = "ID" Else ForeignID = DB(i, Trim(vForeignID_Field))
              If Dict.Exists(ForeignID) Then
                  For j = 1 To AddCols
                      DB(i, cCol + j) = Dict(ForeignID)(vFieldNo(j - 1))
                  Next
              End If
          Next
      Next
      
      Connect_DB = DB
          
      End Function
      '########################
      ' 특정 배열에서 Value를 포함하는 레코드만 찾아 다시 배열로 반환
      ' Array = Filtered_DB(Array, "검색값", False)
      '########################
      Function Filtered_DB(DB, Value, Optional FilterCol, Optional ExactMatch As Boolean = False) As Variant
      
      Dim cRow As Long
      Dim cCol As Long
      Dim vArr As Variant: Dim s As String: Dim filterArr As Variant:  Dim Cols As Variant: Dim Col As Variant: Dim Colcnt As Long
      Dim isDateVal As Boolean
      Dim vReturn As Variant: Dim vResult As Variant
      Dim Dict As Object: Dim dictKey As Variant
      Dim i As Long: Dim j As Long
      Dim Operator As String
      
      Set Dict = CreateObject("Scripting.Dictionary")
      
      If Value <> "" Then
          cRow = UBound(DB, 1)
          cCol = UBound(DB, 2)
          ReDim vArr(1 To cRow)
          For i = 1 To cRow
              s = ""
              For j = 1 To cCol
                  s = s & DB(i, j) & "|^"
              Next
              vArr(i) = s
          Next
          
          If IsMissing(FilterCol) Then
              filterArr = vArr
          Else
              Cols = Split(FilterCol, ",")
              ReDim filterArr(1 To cRow)
              For i = 1 To cRow
                  s = ""
                  For Each Col In Cols
                      s = s & DB(i, Trim(Col)) & "|^"
                  Next
                  filterArr(i) = s
              Next
          End If
          
          If left(Value, 2) = ">=" Or left(Value, 2) = "<=" Or left(Value, 2) = "=>" Or left(Value, 2) = "=<" Then
              Operator = left(Value, 2)
              If IsDate(Right(Value, Len(Value) - 2)) Then isDateVal = True
          ElseIf left(Value, 1) = ">" Or left(Value, 1) = "<" Then
              Operator = left(Value, 1)
              If IsDate(Right(Value, Len(Value) - 1)) Then isDateVal = True
          Else: End If
          
          If Operator <> "" Then
              If isDateVal = False Then
                  Select Case Operator
                      Case ">"
                          For i = 1 To cRow
                              If CDbl(left(filterArr(i), Len(filterArr(i)) - 2)) > CDbl(Right(Value, Len(Value) - 1)) Then: vArr(i) = left(vArr(i), Len(vArr(i)) - 2): vReturn = Split(vArr(i), "|^"): Dict.Add i, vReturn
                          Next
                      Case "<"
                          For i = 1 To cRow
                              If CDbl(left(filterArr(i), Len(filterArr(i)) - 2)) < CDbl(Right(Value, Len(Value) - 1)) Then: vArr(i) = left(vArr(i), Len(vArr(i)) - 2): vReturn = Split(vArr(i), "|^"): Dict.Add i, vReturn
                          Next
                      Case ">=", "=>"
                          For i = 1 To cRow
                              If CDbl(left(filterArr(i), Len(filterArr(i)) - 2)) >= CDbl(Right(Value, Len(Value) - 2)) Then: vArr(i) = left(vArr(i), Len(vArr(i)) - 2): vReturn = Split(vArr(i), "|^"): Dict.Add i, vReturn
                          Next
                       Case "<=", "=<"
                          For i = 1 To cRow
                              If CDbl(left(filterArr(i), Len(filterArr(i)) - 2)) <= CDbl(Right(Value, Len(Value) - 2)) Then: vArr(i) = left(vArr(i), Len(vArr(i)) - 2): vReturn = Split(vArr(i), "|^"): Dict.Add i, vReturn
                          Next
                  End Select
              Else
                  Select Case Operator
                      Case ">"
                          For i = 1 To cRow
                              If CDate(left(filterArr(i), Len(filterArr(i)) - 2)) > CDate(Right(Value, Len(Value) - 1)) Then: vArr(i) = left(vArr(i), Len(vArr(i)) - 2): vReturn = Split(vArr(i), "|^"): Dict.Add i, vReturn
                          Next
                      Case "<"
                          For i = 1 To cRow
                              If CDate(left(filterArr(i), Len(filterArr(i)) - 2)) < CDate(Right(Value, Len(Value) - 1)) Then: vArr(i) = left(vArr(i), Len(vArr(i)) - 2): vReturn = Split(vArr(i), "|^"): Dict.Add i, vReturn
                          Next
                      Case ">=", "=>"
                          For i = 1 To cRow
                              If CDate(left(filterArr(i), Len(filterArr(i)) - 2)) >= CDate(Right(Value, Len(Value) - 2)) Then: vArr(i) = left(vArr(i), Len(vArr(i)) - 2): vReturn = Split(vArr(i), "|^"): Dict.Add i, vReturn
                          Next
                       Case "<=", "=<"
                          For i = 1 To cRow
                              If CDate(left(filterArr(i), Len(filterArr(i)) - 2)) <= CDate(Right(Value, Len(Value) - 2)) Then: vArr(i) = left(vArr(i), Len(vArr(i)) - 2): vReturn = Split(vArr(i), "|^"): Dict.Add i, vReturn
                          Next
                  End Select
              End If
          Else
              If ExactMatch = False Then
                  For i = 1 To cRow
                      If filterArr(i) Like "*" & Value & "*" Then
                          vArr(i) = left(vArr(i), Len(vArr(i)) - 2)
                          vReturn = Split(vArr(i), "|^")
                          Dict.Add i, vReturn
                      End If
                  Next
              Else
                  For i = 1 To cRow
                      If filterArr(i) Like Value & "|^" Then
                          vArr(i) = left(vArr(i), Len(vArr(i)) - 2)
                          vReturn = Split(vArr(i), "|^")
                          Dict.Add i, vReturn
                      End If
                  Next
              End If
          End If
              
          If Dict.Count > 0 Then
              ReDim vResult(1 To Dict.Count, 1 To cCol)
              i = 1
              For Each dictKey In Dict.Keys
                  For j = 1 To cCol
                      vResult(i, j) = Dict(dictKey)(j - 1)
                  Next
                  i = i + 1
              Next
          End If
          
          Filtered_DB = vResult
      Else
          Filtered_DB = DB
      End If
      
      End Function
      
      '########################
      ' 각 제품별 잔고수량을 계산합니다.
      ' DB = Get_Balance(DB, shtInventory, 입고수량열번호, 출고수량열번호, 제품ID열번호)
      '########################
      
      Function Get_Balance(DB, InventoryWS As Worksheet, ColumnIN, ColumnOUT, ColumnID) As Variant
      
      Dim InventoryDB As Variant
      Dim Dict As Dictionary
      Dim cRow As Long: Dim cCol As Long
      Dim i As Long: Dim cID
      
      If Not IsNumeric(ColumnOUT) Then ColumnOUT = Range(ColumnOUT & 1).Column
      If Not IsNumeric(ColumnIN) Then ColumnIN = Range(ColumnIN & 1).Column
      If Not IsNumeric(ColumnID) Then ColumnID = Range(ColumnID & 1).Column
      
      cRow = UBound(DB, 1)
      cCol = UBound(DB, 2)
      Set Dict = CreateObject("Scripting.Dictionary")
      
      ReDim Preserve DB(1 To cRow, 1 To cCol + 1)
      
      For i = 1 To cRow:    Dict.Add DB(i, 1), 0: Next
      InventoryDB = Get_DB(InventoryWS)
      
      For i = LBound(InventoryDB, 1) To UBound(InventoryDB, 1)
          cID = InventoryDB(i, ColumnID)
          If Dict.Exists(cID) Then
              Dict(cID) = Dict(cID) + InventoryDB(i, CLng(ColumnIN)) - InventoryDB(i, CLng(ColumnOUT))
          End If
      Next
      
      For i = LBound(DB, 1) To UBound(DB, 1)
          DB(i, cCol + 1) = Dict(DB(i, 1))
      Next
      
      Get_Balance = DB
      
      End Function
      
      '########################
      ' 특정 시트의 DB 정보를 Dictionary로 반환 (이번 예제파일에서만 사용)
      ' Dict = GetDict(Sheet1)
      '########################
      Function Get_Dict(WS As Worksheet) As Object
      
      Dim cRow As Long: Dim cCol As Long
      Dim Dict As Object
      Dim vArr As Variant
      Dim i As Long: Dim j As Long
      
      Set Dict = CreateObject("Scripting.Dictionary")
      
      With WS
          cRow = Get_InsertRow(WS) - 1
          cCol = Get_ColumnCnt(WS)
          
          For i = 1 To cRow
              ReDim vArr(1 To cCol - 1)
              For j = 2 To cCol
                  vArr(j - 1) = .Cells(i, j)
              Next
              Dict.Add .Cells(i, 1).Value, vArr
          Next
      End With
      
      Set Get_Dict = Dict
      
      End Function
      
      '###############################################################
      '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
      '▶ Arr_To_Dict 함수
      '▶ 범위를 Dictionary 로 변환합니다.
      '▶ 인수 설명
      '_____________Arr       : Dictionary로 변환할 배열입니다.
      '▶ 사용 예제
      'Dict = Arr_To_Dict(Arr)
      '##############################################################
      Function Arr_To_Dict(Arr As Variant) As Object
      
      Dim Dict As Object: Dim vArr As Variant
      Dim cCol As Long
      Dim i As Long: Dim j As Long
      
      Set Dict = CreateObject("Scripting.Dictionary")
      cCol = UBound(Arr, 2)
      
      For i = LBound(Arr, 1) To UBound(Arr, 1)
              ReDim vArr(1 To cCol - 1)
              For j = 2 To cCol
                  vArr(j - 1) = Arr(i, j)
              Next
              Dict.Add Arr(i, 1), vArr
      Next
      
      Set Arr_To_Dict = Dict
      
      End Function
      
      '###############################################################
      '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
      '▶ Dict_To_Arr 함수
      '▶ Dictionary를 범위로 변환합니다.
      '▶ 인수 설명
      '_____________Dict       : 배열로 변환할 Dictionary 입니다.
      '▶ 사용 예제
      'Arr = Dict_To_Arr(Dict)
      '##############################################################
      Function Dict_To_Arr(Dict As Object) As Variant
      
      Dim i As Long: Dim j As Long: Dim dictKey As Variant: Dim cCol As Long
      Dim vTest As Variant
      i = 1
      
      If Dict.Count > 0 Then
          If IsObject(Dict(Dict.Keys()(0))) Then cCol = UBound(Dict(Dict.Keys()(0))) Else cCol = 1
          ReDim vResult(1 To Dict.Count, 1 To cCol + 1)
          For Each dictKey In Dict.Keys
              vResult(i, 1) = dictKey
              If cCol = 1 Then
                  vResult(i, 2) = Dict(dictKey)
              Else
                  For j = 2 To cCol + 1
                      vResult(i, j) = Dict(dictKey)(j - 1)
                  Next
              End If
              i = i + 1
          Next
      End If
      
      Dict_To_Arr = vResult
          
      End Function
      '########################
      ' 시트의 특정 필드 내에서 추가되는 값이 고유값인지 확인. 고유값일 경우 TRUE를 반환
      ' boolean = IsUnique(Sheet1, "사과", 1)
      '########################
      Function IsUnique(DB As Variant, uniqueVal, Optional ColNo As Long = 1, Optional Exclude) As Boolean
      
      Dim endRow As Long
      Dim i As Long
      
      For i = LBound(DB, 1) To UBound(DB, 1)
          If DB(i, ColNo) = uniqueVal Then
              If Not IsMissing(Exclude) Then
                  If Exclude <> uniqueVal Then
                      IsUnique = False
                      Exit Function
                  End If
              Else
                  IsUnique = False: Exit Function
              End If
          End If
      Next
      
      IsUnique = True
      
      End Function
      
      '###############################################################
      '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
      '▶ Extract_Column 함수
      '▶ 배열에서 지정한 열을 추출합니다.
      '▶ 인수 설명
      '_____________DB        : 특정 열을 추출할 배열입니다.
      '_____________Col       : 배열에서 추출할 열의 열번호입니다.
      '▶ 사용 예제
      'Arr = Extract_Column(Arr, 3) '<- 3번째 열을 추출합니다.
      '##############################################################
      
      Function Extract_Column(DB As Variant, Col As Long) As Variant
      
      Dim i As Long
      Dim vArr As Variant
      
      ReDim vArr(LBound(DB) To UBound(DB), 1 To 1)
      For i = LBound(DB) To UBound(DB)
              vArr(i, 1) = DB(i, Col)
      Next
      
      Extract_Column = vArr
      
      End Function
      
      사용한vba에서 함수는 이것이고, 이 함수를 불러와 사용한부분은 저기 동그라미 친 부분입니다.
      
      -엑셀 재고관리프로그램 만들기- 강의중 1일차 내용에 포함된 자료입니다.

      • 2021-10-05 03:26
        채택된 답변

        @가을전어 님 오빠두님께서 강의에서도 설명해주셨던 내용입니다

        Get_DB 함수를 표 오른쪽에 최대값ID 없이 사용하려면 ID없음을 True로 사용해야 된다고 합니다

        DB = Get_DB(ShtCustomer, True)

        로 입력하면 해결될 것 같아요

        시트 범위를 배열로 변환 :: Get_DB 함수 사용법 - 오빠두엑셀 (oppadu.com)


        • 2021-10-05 23:42

          @더블유에이 님 감사합니다! 강의를 하나하나 꼼꼼하게 봐야되는거군요. 총집합 강의로 보다보니 놓친부분이네요. 해결해주셔서 감사합니다.


전체 7,900
번호 카테고리 제목 작성자 작성일 추천 조회
알림
🎉 오피스 분야 30주 연속 1위! - 「 진짜쓰는 실무엑셀 」 전자책이 출간되었습니다! (14)
오빠두엑셀 | 2022.09.28 | 추천 7 | 조회 592
오빠두엑셀 2022.09.28 7 592
공지사항 함수/공식
[신규 기능 업데이트!] 👉 이제 게시글 작성시 스크린샷 복/붙이 가능합니다! 😎 (3)
오빠두엑셀 | 2022.08.04 | 추천 5 | 조회 1798
오빠두엑셀 2022.08.04 5 1798
공지사항 함수/공식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (100)
오빠두엑셀 | 2021.10.28 | 추천 128 | 조회 7599
오빠두엑셀 2021.10.28 128 7599
42888 함수/공식
New 나와 골프라운딩을 한 횟수 구하는 방법 엑셀파일
o**** | 00:05 | 추천 0 | 조회 18
o**** 00:05 - 18
42886 함수/공식
New 엑셀 함수 식을 어떻게 만들어야 할지 모르겠습니다 ㅠㅠ 엑셀파일 (1)
dfgkdflglkdf | 2022.10.06 | 추천 0 | 조회 18
dfgkdflglkdf 2022.10.06 - 18
42884 함수/공식
New match + index 수식 사용후 나오는 텍스트 값에 조건수식을 걸어 줄임말 텍스트 추출 오류 엑셀파일 (2)
로링 | 2022.10.06 | 추천 0 | 조회 19
로링 2022.10.06 - 19
42878 함수/공식
New IF 함수 1900-01-00 안나오게 할려면 어떻게 해야 하나요? 첨부파일 (2) 답변완료
선도부 | 2022.10.06 | 추천 0 | 조회 35
선도부 2022.10.06 - 35
42876 구글시트
New 조건부서식 관련(다중 중복값) 문의 드립니다 엑셀파일첨부파일 (2)
거꾸로문 | 2022.10.06 | 추천 0 | 조회 23
거꾸로문 2022.10.06 - 23
42873 함수/공식
New 특정 행에 특정 텍스트가 몇개 써있는지 구하는 식 엑셀파일 (2) 답변완료
이주 | 2022.10.06 | 추천 0 | 조회 29
이주 2022.10.06 - 29
42872 문서서식
New 조건부 서식 관련 질문 (1)
아홉열 | 2022.10.06 | 추천 0 | 조회 26
아홉열 2022.10.06 - 26
42869 함수/공식
New 텍스트에 비교연산자 사용시 에러처리 (2) 답변완료
쌈타 | 2022.10.06 | 추천 0 | 조회 29
쌈타 2022.10.06 - 29
42863 기능/도구
New 매번 뭐만 쓰거나 하면 몇십초정도 다운 상태가 됩니다ㅜㅜ (2)
jeongd**** | 2022.10.06 | 추천 0 | 조회 33
jeongd**** 2022.10.06 - 33
42860 VBA
New 입력 범위 코딩했는데 적용이 잘 안되어요 엑셀파일첨부파일
은이랑 | 2022.10.06 | 추천 0 | 조회 27
은이랑 2022.10.06 - 27
42858 함수/공식
New 1~10개의 데이터 중 몇번째 까지 데이터 가져오기가 가능한가요? 첨부파일 (3) 답변완료
아드키 | 2022.10.06 | 추천 0 | 조회 33
아드키 2022.10.06 - 33
42854 문서서식
New 파일 저장 후 다시 열었을 때 특정 부분 서식이 저절로 바뀌어 있는 문제
보리건빵 | 2022.10.06 | 추천 0 | 조회 20
보리건빵 2022.10.06 - 20
42851 함수/공식
New BOM 관리 (2)
정길이 | 2022.10.06 | 추천 0 | 조회 36
정길이 2022.10.06 - 36
42850 함수/공식
New 성장률(신장률) 해석 및 기본 함수가 이게 맞을까요,,? 첨부파일
NANA77 | 2022.10.06 | 추천 0 | 조회 18
NANA77 2022.10.06 - 18
42849 피벗테이블
New 피벗테이블단축키가안되요. 첨부파일 (1)
플립플랩 | 2022.10.06 | 추천 0 | 조회 16
플립플랩 2022.10.06 - 16
42846 파워쿼리/피벗
New 액세스에서 파워쿼리로 데이터 불러올때 자동업데이트 방법 (4)
하모닉스 | 2022.10.06 | 추천 0 | 조회 22
하모닉스 2022.10.06 - 22
42843 함수/공식
New if ifs and 다중 함수좀 알려주세요 첨부파일 (3) 답변완료
동하 | 2022.10.06 | 추천 0 | 조회 30
동하 2022.10.06 - 30
42839 함수/공식
New 상품 가격수준별 분포 구하는 법(+그래프) 엑셀파일 (1)
sue22 | 2022.10.05 | 추천 0 | 조회 28
sue22 2022.10.05 - 28
42838 VBA
New VBA 코딩 중인데.. 어렵네요 엑셀파일첨부파일
실런 | 2022.10.05 | 추천 0 | 조회 43
실런 2022.10.05 - 43
42836 함수/공식
New 엑셀 함수 관련해서 문의 드리고자 합니다. 엑셀파일 (2) 답변완료
dfgkdflglkdf | 2022.10.05 | 추천 0 | 조회 40
dfgkdflglkdf 2022.10.05 - 40
42835 문서서식
New 부등호 ≥ 가 엑셀에 들어가면 줄이 엉망으로 변합니다.. (1)
석준필 | 2022.10.05 | 추천 0 | 조회 28
석준필 2022.10.05 - 28
42834 문서서식
New 엑셀에서 '배경 제거'말고 '배경 채우기'기능도 있나요? (2)
월마리아 | 2022.10.05 | 추천 0 | 조회 26
월마리아 2022.10.05 - 26
42833
New 엑셀VBA 재무제표 크롤링 질문드립니다.
영푸라기 | 2022.10.05 | 추천 0 | 조회 23
영푸라기 2022.10.05 - 23
42832 함수/공식
New 2차원 TABLE 검색 엑셀파일 (5)
대빵 | 2022.10.05 | 추천 0 | 조회 33
대빵 2022.10.05 - 33
42828 함수/공식
New index, match, maxif관련 서식 엑셀파일첨부파일 (2) 답변완료
| 2022.10.05 | 추천 0 | 조회 40
2022.10.05 - 40
42820 VBA
New 외국어공부를 위한 원문사이에 해석을 열에 끼워넣기 (2) 답변완료
ㅈㄱㄹ | 2022.10.05 | 추천 0 | 조회 39
ㅈㄱㄹ 2022.10.05 - 39
42819 구글시트
New 숨긴 셀 제외 스프레드시트 적용 엑셀파일첨부파일
거꾸로문 | 2022.10.05 | 추천 0 | 조회 33
거꾸로문 2022.10.05 - 33
42816 함수/공식
New 함수 사용 시 특정 셀 텍스트 추출 하는 경우 첨부파일 (6) 답변완료
구찌갱 | 2022.10.05 | 추천 0 | 조회 44
구찌갱 2022.10.05 - 44
42813 구글시트
New SMALL 함수 관련 숨긴 셀 값 제외 엑셀파일첨부파일 (10) 답변완료
거꾸로문 | 2022.10.05 | 추천 0 | 조회 37
거꾸로문 2022.10.05 - 37
42809 함수/공식
New Bar code128 수식을 인식못하네요 엑셀파일첨부파일 (4) 답변완료
어린왕자77 | 2022.10.05 | 추천 0 | 조회 39
어린왕자77 2022.10.05 - 39