2026/04/22

오늘의 이야기


#billcorea #운동동아리관리앱
🏸 شنيدل، تطبيق ضروري لأندية كرة الريشة!
👉 مباراة اللعب - سجل النتائج وابحث عن المعارضين 🎉
مثالي لأي مكان، بمفردك، مع الأصدقاء، أو في النادي! 🤝
إذا كنت تحب كرة الريشة، جربها بالتأكيد

اذهب إلى التطبيق 👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay




오늘의 이야기

오늘의 Python & Excel 팁 Python의 xlwings를 활용하여 Excel 셀에 데이터를 효율적으로 다루는 방법과, Python의 tuple 데이터를 다양한 방식으로 정렬하는 방법에 대해 다루었습니다.


 


코딩 하는 아이



 



  1. xlwings로 셀에 줄바꿈 적용

    • tuple 데이터를 Excel 셀에 삽입하면서 줄바꿈을 적용하려면:

      • 데이터는 "\n"으로 연결.

      • Excel 셀의 WrapText 속성을 활성화.





    python



    import xlwings as xw
    sheet.range("A1").value = "\n".join(data)
    sheet.range("A1").api.WrapText = True





  2. Python의 tuple 정렬

    • sorted()를 사용한 기본 오름차순, 내림차순 정렬.

    • key 매개변수를 활용하여 특정 조건에 맞춘 사용자 지정 정렬.



    python



    sorted(data)  # 기본 오름차순
    sorted(data, reverse=True) # 내림차순
    sorted(data, key=len) # 데이터 길이에 따른 정렬






Python과 Excel을 유연하게 다루며 업무 및 프로젝트를 더욱 효율적으로 관리하는 데 도움을 줄 수 있는 유익한 팁이었습니다!





오늘의 이야기

여름 제주도 여행 가이드: 꼭 방문해야 할 명소와 맛집 추천


코파일럿이 그려주는 동화 이야기



 


여름 제주도 여행 가이드: 꼭 방문해야 할 명소와 맛집 추천


여행의 목적


여름 여행을 계획 중이신가요? 이번 블로그에서는 제주도 여행을 계획하는 분들을 위해 꼭 방문해야 할 명소와 맛집을 소개해드리겠습니다. 이 정보를 통해 여러분의 제주도 여행이 더욱 특별하고 즐거운 경험이 되기를 바랍니다.


여행 일정


1일차: 동부 지역 탐방



  • 오전: 성산일출봉에서 일출 감상

  • 오후: 섭지코지 방문 후 근처 카페에서 휴식

  • 저녁: 성산포항에서 해산물 저녁 식사


이동 경로 및 소요 시간:



  • 성산일출봉에서 섭지코지까지: 약 15분

  • 섭지코지에서 성산포항까지: 약 10분


2일차: 서부 지역 탐방



  • 오전: 협재해수욕장에서 해변 산책 및 물놀이

  • 오후: 한림공원 방문 (야자수길, 연못 등)

  • 저녁: 금능해변 근처에서 저녁 식사


이동 경로 및 소요 시간:



  • 성산포항에서 협재해수욕장까지: 약 1시간 20분

  • 협재해수욕장에서 한림공원까지: 약 5분


3일차: 중부 및 남부 지역 탐방



  • 오전: 한라산 국립공원 트레킹 (성판악 코스 추천)

  • 오후: 만장굴 탐험

  • 저녁: 제주 시내에서 쇼핑 및 로컬 음식 맛보기


이동 경로 및 소요 시간:



  • 한림공원에서 금능해변까지: 약 5분

  • 금능해변에서 한라산 국립공원까지: 약 1시간 10분


4일차: 서귀포 지역 탐방



  • 오전: 천지연 폭포 방문

  • 오후: 정방폭포와 주상절리대 탐방

  • 저녁: 서귀포 매일 올레시장 방문


이동 경로 및 소요 시간:



  • 한라산 국립공원에서 만장굴까지: 약 1시간

  • 만장굴에서 제주 시내까지: 약 40분


5일차: 휴식 및 자유 시간



  • 오전: 제주도립미술관 방문

  • 오후: 제주 스파에서 휴식

  • 저녁: 제주 시내에서 마지막 저녁 식사 및 기념품 쇼핑


이동 경로 및 소요 시간:



  • 제주 시내에서 천지연 폭포까지: 약 1시간

  • 천지연 폭포에서 정방폭포까지: 약 6분


추천 명소



  1. 성산일출봉: 제주특별자치도 서귀포시 성산읍 일출로 284-6

  2. 한라산 국립공원 (성판악 탐방로): 제주특별자치도 제주시 조천읍 516로 1865

  3. 협재해수욕장: 제주특별자치도 제주시 한림읍 협재2길 15

  4. 만장굴: 제주특별자치도 제주시 구좌읍 만장굴길 182

  5. 섭지코지: 제주특별자치도 서귀포시 성산읍 섭지코지로 107


추천 맛집



  1. 고집돌우럭

    • 주소: 제주 제주시 조천읍 신북로 491-9 2층

    • 영업시간: 매일 10:00 - 21:30 (브레이크타임 15:00 - 17:00, 라스트오더 20:20)



  2. 올래국수

    • 주소: 제주 제주시 귀아랑길 24

    • 영업시간: 매일 08:00 - 15:00 (일요일 정기휴무)



  3. 명진전복

    • 주소: 제주 제주시 구좌읍 해맞이해안로 1282

    • 영업시간: 매일 09:30 - 21:30 (라스트오더 20:30, 화요일 정기휴무)



  4. 우진해장국

    • 주소: 제주 제주시 서사로 11

    • 영업시간: 매일 06:00 - 22:00



  5. 스시 호시카이

    • 주소: 제주 제주시 오남로 90

    • 영업시간: 매일 12:00 - 21:00 (브레이크타임 15:00 - 18:00)




특별한 숙소 경험



  1. 제주 교래자연휴양림: 제주 전통 가옥 형태의 독채 숙소로, 자연 속에서 여유로운 시간을 보낼 수 있습니다.

  2. 와락 게스트하우스: 세화해변 근처에 위치한 게스트하우스로, 특별한 '별빛 투어' 프로그램을 운영합니다.


제주도에서의 여름 여행이 여러분에게 잊지 못할 추억이 되기를 바랍니다. 즐거운 여행 되세요! 😊


 


 


옵데강 (제주맛집 리스트 모아보기) - Google Play 앱



 


옵데강 (제주맛집 리스트 모아보기) - Google Play 앱


인터넷에 널린(?) 제주 맛집 정보를 모아 봅니다.


play.google.com




 





오늘의 이야기




《시간을 파는 가게》

시간 가게


 

1장. 오래된 골목, 그리고 간판 하나 

도시는 오늘도 바빴다.
사람들은 시계를 보며 걷고, 휴대폰을 보며 밥을 먹고, 미래를 걱정하며 잠에 들었다.
누구도 지금 이 순간을 살아내지 못하는 것처럼 보였다.
그도 그랬다.
출근길엔 지하철 안에서 멍하니 고개를 떨구었고, 회사에선 말보다 한숨이 먼저 나왔다.
“고생하셨습니다”라는 말은 더 이상 위로가 아닌 자동응답처럼 느껴졌고,
이따금 울리는 카톡 알림 소리는 업무인지 사생활인지조차 구분되지 않았다.
그날도 그는 평소처럼 일찍 출근했고, 밤늦게 퇴근했다.
커피는 벌써 다섯 잔째였고, 점심은 생각도 나지 않았다.
회의 중 누군가의 말이 들리지 않아 핀잔을 들었고, 퇴근 직전엔 “좀 더 분발하자”는 상사의 말이 잔잔한 독처럼 퍼졌다.
그리고—
그는 아무 말 없이 노트북을 닫고, 조용히 사직서를 올렸다.
감정도, 미련도 없었다.
남은 건 단 하나, 깊고 무거운 피로감뿐이었다.
지하철 대신 걷기로 했다.
딱히 가고 싶은 곳이 있는 건 아니었지만, 지금 이대로 어딘가 멀어지고 싶었다.
하루치의 피로가 발끝에 묻은 채, 도시의 길을 무의식적으로 밟아 나갔다.
그러던 중—
어딘가에서 바람이 스쳤다.
아스팔트 냄새 속에 섞여 들어온 풀냄새 같은, 이상할 만큼 낯익은 공기였다.
그는 문득, 잊고 있던 어떤 풍경을 떠올렸다.
어릴 적, 시골 외갓집 근처의 들판.
해 질 무렵이면 아이들 다섯이 모였다.
누구는 두건을 쓰고, 누구는 종이칼을 들고,
우리는 독수리 오형제였다.
바람을 맞으며 달리던 길,
흙먼지를 뒤집어쓴 채 웃어대던 얼굴들.
손엔 장난감이었지만, 마음만은 진짜 세상을 구하는 영웅이었다.
그 시간은—
짧고, 투명하고, 무한했다.
그는 걸음을 멈췄다.
갑자기 코끝이 시큰해졌다.
“다들 지금 뭐 하고 있으려나...”
혼잣말이 새어나왔다.
하지만 대답 대신 돌아온 건, 고요한 정적.
그리고 문득 눈앞에 낯선 골목 하나가 펼쳐져 있었다.
좁고 눅눅한 그 골목 안,
낡은 간판 하나가 나지막이 고개를 들고 있었다.
 


시간을 팝니다


검은색 바탕에 금빛 글씨.
마치 누군가의 손때로 빛바랜 책 표지처럼, 오래되고도 묘하게 정겨운 느낌이었다.
가게는 문이 열려 있었고, 안에서는 시계가 '째깍째깍' 울리는 소리가 귓가를 간질였다.
그는 문 앞에 멈춰 섰다.
지금까지 흘러간 시간들, 그 속에서 닳아버린 감정들이 잠시 그의 등을 밀었다.
그리고 문은—
그가 손을 대기도 전에, 천천히 열렸다.
 
 





반응형






























오늘의 이야기

Python으로 문장 내 단어 빈도 쉽게 분석하기


문자열에서 단어 출현 빈도



 


기 - 문제의식


텍스트 데이터를 다루다 보면 특정 단어가 얼마나 자주 등장했는지 파악해야 할 때가 많습니다. 이를테면 문서 분석, 검색 엔진 최적화(SEO), 소셜 미디어 데이터 분석 등 다양한 분야에서 단어 빈도 계산이 중요한 역할을 합니다. Python은 이러한 작업을 간단하게 처리할 수 있는 강력한 도구를 제공합니다. 오늘은 Python을 사용해 문장 내 단어 빈도를 계산하는 방법을 알아보겠습니다.


승 - 해결책 1: collections.Counter 활용


Python의 collections 모듈 내 Counter 클래스는 단어 빈도를 계산하는 가장 간단하고 효율적인 방법 중 하나입니다. 아래는 예제 코드입니다:



python



from collections import Counter

sentence = "Python is amazing and Python is fun"
words = sentence.split()
word_counts = Counter(words)

print(word_counts)




위 코드는 단어를 공백으로 나눈 뒤, 각 단어가 몇 번 등장했는지를 계산해줍니다. 결과는 다음과 같습니다:



 



Counter({'Python': 2, 'is': 2, 'amazing': 1, 'and': 1, 'fun': 1})




만약 대소문자를 무시하고 싶다면 sentence.lower()를 사용해 소문자로 변환할 수 있습니다. Counter는 간결하면서도 강력한 기능을 제공하여 추천할 만합니다.


전 - 해결책 2: collections 없이 구현하기


만약 외부 모듈을 사용하지 않고 이 작업을 수행하려면 어떻게 해야 할까요? 다음은 이를 직접 구현한 코드입니다:



python



sentence = "Python is amazing and Python is fun"
words = sentence.lower().split()
word_counts = {}

for word in words:
if word in word_counts:
word_counts[word] += 1
else:
word_counts[word] = 1

print(word_counts)




이 코드는 각 단어를 순회하며, 이미 존재하는 단어의 빈도를 증가시키거나 새로운 단어를 추가합니다. 실행 결과는 다음과 같으며 Counter를 사용하는 방법과 동일한 결과를 얻을 수 있습니다:



 



{'python': 2, 'is': 2, 'amazing': 1, 'and': 1, 'fun': 1}




결 - 마무리 및 활용 방안


단어 빈도 분석은 데이터 분석에서 기본적이지만 매우 유용한 기술입니다. Python을 사용하면 collections.Counter와 같은 간단한 도구부터 직접 구현하는 방법까지 다양한 선택지가 존재합니다. 여러분의 필요에 맞는 방법을 선택해 활용해 보세요.


만약 데이터 전처리, 예를 들어 문장부호 제거나 불용어(stop words) 제거가 필요하다면 추가적인 코드를 더해 분석을 심화할 수도 있습니다.


이제 여러분도 Python으로 단어 빈도를 계산해보고, 다양한 텍스트 분석 작업에 도전해 보세요!


이 글이 도움이 되었길 바랍니다. 추가적으로 원하는 방향이나 수정이 있다면 말씀해 주세요! 😊





오늘의 이야기

Oracle 실전 활용 팁 모음


꿀벌의 노동



 


Oracle 데이터베이스를 다루면서 자주 접하는 문제를 해결하고, 효율적인 쿼리를 작성할 수 있는 방법들을 정리했습니다.


1. Oracle에서 만 19세 나이 산출 방법


만 나이를 계산하려면 MONTHS_BETWEEN 함수를 사용하여 생년월일과 현재 날짜 간 차이를 계산하고, 12로 나누어 연령을 산출할 수 있습니다.



sql



SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('2005-04-10', 'YYYY-MM-DD')) / 12) AS age
FROM dual;




만약 만 19세 이상인지 확인하려면 다음과 같은 쿼리를 활용할 수 있습니다:



sql



SELECT CASE 
WHEN ADD_MONTHS(TO_DATE('2005-04-10', 'YYYY-MM-DD'), 12 * 19) <= SYSDATE
THEN '19세 이상'
ELSE '19세 미만'
END AS age_status
FROM dual;




2. ORA-01847 오류 무시


날짜 형식 오류(ORA-01847)를 처리하기 위해 예외(Exception) 처리를 활용할 수 있습니다:



sql



BEGIN
SELECT TO_DATE('2025-02-30', 'YYYY-MM-DD') FROM dual;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('오류 발생: 무시하고 계속 진행');
END;




입력 데이터가 정확한지 검증하는 것이 가장 효과적인 해결책입니다.


3. 사용자 정의 함수에서 오류 처리


프로시저 또는 함수에서 발생할 수 있는 쿼리 오류를 처리하려면 예외 처리를 포함하는 구조를 사용합니다:



sql



CREATE OR REPLACE FUNCTION get_employee_name(p_emp_id NUMBER)
RETURN VARCHAR2
IS
v_name VARCHAR2(100);
BEGIN
SELECT ename INTO v_name
FROM emp
WHERE empno = p_emp_id;

RETURN v_name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN '존재하지 않는 직원';
WHEN TOO_MANY_ROWS THEN
RETURN '중복된 데이터 오류';
WHEN OTHERS THEN
RETURN '예기치 않은 오류 발생';
END get_employee_name;
/




4. 프로시저의 쿼리 확인 방법


DBMS_METADATA 또는 USER_SOURCE를 활용하여 Oracle에서 프로시저의 소스 코드를 확인할 수 있습니다:



sql



SELECT DBMS_METADATA.GET_DDL('PROCEDURE', '프로시저_이름', '스키마_이름') 
FROM dual;




또는 USER_SOURCE를 사용하여 코드 확인:



sql



SELECT text 
FROM USER_SOURCE
WHERE name = '프로시저_이름'
ORDER BY line;




5. PIVOT과 CONNECT BY를 활용한 동적 월별 합산


PIVOT을 활용하여 월별 거래 합계를 계산할 수 있습니다:



sql



WITH months AS (
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'MM'), LEVEL - 1), 'YYYY-MM') AS month_label
FROM dual
CONNECT BY LEVEL <= 12
),
transformed_data AS (
SELECT TO_CHAR(transaction_date, 'YYYY-MM') AS month_label, amount
FROM transactions
)
SELECT *
FROM transformed_data
PIVOT (
SUM(amount) FOR month_label IN ('2025-01' AS "JAN", '2025-02' AS "FEB", '2025-03' AS "MAR")
);




6. 반기별 거래 합산


CASE 문을 사용하여 반기별 거래 합계를 구합니다:



sql



SELECT 
CASE
WHEN EXTRACT(MONTH FROM transaction_date) BETWEEN 1 AND 6
THEN TO_DATE(EXTRACT(YEAR FROM transaction_date) || '-01-01', 'YYYY-MM-DD')
ELSE TO_DATE(EXTRACT(YEAR FROM transaction_date) || '-07-01', 'YYYY-MM-DD')
END AS half_year_start,
SUM(amount) AS total_amount
FROM transactions
GROUP BY
CASE
WHEN EXTRACT(MONTH FROM transaction_date) BETWEEN 1 AND 6
THEN TO_DATE(EXTRACT(YEAR FROM transaction_date) || '-01-01', 'YYYY-MM-DD')
ELSE TO_DATE(EXTRACT(YEAR FROM transaction_date) || '-07-01', 'YYYY-MM-DD')
END
ORDER BY half_year_start;




결론


위의 방법들을 활용하면 Oracle 데이터베이스를 효율적으로 사용할 수 있습니다. 각각의 쿼리는 특정한 문제를 해결하거나 데이터를 동적으로 관리하는 데 유용합니다. 여러분의 업무나 프로젝트에서 적극적으로 활용해보세요!





오늘의 이야기

트윌리오 SMS를 이용한 안드로이드 앱 전화번호 검증

청계광장 지킴이



• 이 가이드는 트윌리오 검증과 안드로이드 SMS 리트리버 API를 사용하는 안드로이드 애플리케이션에서 전화번호 검증을 구현하는 방법을 자세히 설명하여 수동 코드 입력 및 SMS 읽기 권한이 필요하지 않습니다.

• 프로세스에는 안드로이드 앱과 트윌리오 검증 사이의 중개자 역할을 하는 서버 측 애플리케이션(노드.js 및 루비에 제공된 예)이 포함된다.

• 안드로이드 앱은 전화번호를 서버로 전송한 후 트윌리오 룩업을 사용하여 번호를 올바르게 포맷(E.164 포맷)하고 트윌리오 검증에 검증 요청을 보낸다.

• 트윌리오 검증은 안드로이드 SMS 리트리버 API에 대한 특정 헤더를 포함하여 검증 코드가 포함된 SMS를 전송하여 메시지를 식별한다.

• 서버는 앱으로부터 검증 코드를 받아 트윌리오 검증이 보낸 코드와 대조하여 확인하여 검증에 성공하면 사용자를 검증된 것으로 표시한다.

• 설정하려면 Twilio 계정, Android Studio, Google Play Services 10.2 이상 안드로이드 기기, 서버 측 환경 변수 구성(TWILIO_ACCOUNT_SID, TWILIO_API_KEY 등)이 필요합니다.

• 안드로이드 앱은 서버 애플리케이션을 가리키는 URL(현지 개발을 위한 ngrok 사용)과 보안 통신을 위한 일치하는 클라이언트 비밀로 구성이 필요하며, 공통 문제 및 디버깅 단계도 해결됩니다.

https://www.twilio.com/docs/verify/app-verification

App Verification with Twilio SMS | Twilio

To get your solution up and running, you'll need a server. We've created quick start server applications that will provide a back end for your application. Follow the directions in the README for each of these projects. When you build SMS verification into

www.twilio.com





오늘의 이야기

Python으로 Oracle 데이터 삽입 시 특수문자 처리 방법


python coding (feat ChatGPT)



 


Oracle 데이터베이스에 데이터를 삽입하면서 문자열에 특수문자, 특히 작은따옴표(')가 포함된 경우 SQL 문법 오류를 방지하는 방법을 소개합니다.


1. SQL Escape 처리


특수문자, 특히 작은따옴표가 포함된 문자열을 안전하게 처리하려면 작은따옴표를 두 개로 변환해야 합니다. Python 코드 예시는 다음과 같습니다:



python



def escape_string(value):
return value.replace("'", "''")

text = "Python's flexibility!"
escaped_text = escape_string(text)
print(escaped_text) # Python''s flexibility!




2. 바인딩 변수 사용


cx_Oracle와 같은 라이브러리를 사용하면 바인딩 변수를 통해 SQL 인젝션을 방지하고 작은따옴표 문제를 자동으로 해결할 수 있습니다.



python



import cx_Oracle

# Oracle 연결 설정
dsn = cx_Oracle.makedsn("your_host", 1521, service_name="your_service")
conn = cx_Oracle.connect("your_username", "your_password", dsn)
cursor = conn.cursor()

# 데이터 삽입
sql = "INSERT INTO your_table (column_name) VALUES (:1)"
data = "Python's flexibility!"

cursor.execute(sql, [data])
conn.commit()

cursor.close()
conn.close()




3. SQL 함수 활용 (QUOTE)


Oracle SQL 자체에서 제공하는 QUOTE 함수를 사용하여 작은따옴표 문제를 해결할 수도 있습니다.



sql



SELECT QUOTE('Python''s flexibility!') FROM dual;




요약



  • Escape 처리: 문자열에서 작은따옴표를 두 개로 바꿉니다.

  • 바인딩 변수 사용: cx_Oracle을 통해 더 안전하게 처리합니다.

  • Oracle SQL 함수: 데이터베이스 자체에서 QUOTE 함수를 활용합니다.


안전한 데이터 삽입을 위해 위 방법 중 상황에 맞는 최적의 방식을 선택하세요!





오늘의 이야기


#스하리1000명프로젝트,
Perso in Corea? Anche se non parli coreano, questa app ti aiuta a muoverti facilmente.
Parla semplicemente la tua lingua: traduce, cerca e mostra i risultati nella tua lingua.
Ottimo per i viaggiatori! Supporta oltre 10 lingue tra cui inglese, giapponese, cinese, vietnamita e altre.
Provalo adesso!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/04/21

오늘의 이야기

Excel VBA를 활용한 자동화 꿀팁!


엑셀예시




엑셀을 사용할 때 반복되는 작업을 자동화하면 업무 효율성이 높아집니다. 오늘은 VBA(Visual Basic for Applications)를 활용하여 셀 메모 위치 자동 조정, 데이터 및 메모 복사, 문자열 변환, 문자열 결합 방법을 살펴보겠습니다.
1️⃣ 셀 메모 위치 자동 조정
엑셀에서 특정 셀의 메모(댓글) 위치를 자동으로 조정하려면 VBA 코드를 활용하면 됩니다.
아래 코드를 실행하면, 각 셀의 메모가 해당 셀의 오른쪽 끝에 정렬됩니다.


Sub AdjustCommentPosition()
Dim cmt As Comment
Dim rng As Range

For Each rng In ActiveSheet.UsedRange
If Not rng.Comment Is Nothing Then
Set cmt = rng.Comment
cmt.Shape.Top = rng.Top + 5 ' 셀의 상단에서 약간 떨어진 위치
cmt.Shape.Left = rng.Left + rng.Width + 5 ' 셀의 오른쪽 끝에 위치
End If
Next rng
End Sub


✅ 주요 기능:


셀의 너비를 고려하여 메모 위치 자동 조정


기존 메모 위치를 수동으로 변경하지 않고 한 번에 정리 가능

2️⃣ C열, D열 데이터 및 D열 메모를 새로운 시트에 정리
엑셀에서 특정 열의 데이터와 메모(댓글)를 새로운 시트에 정리해서 저장하고 싶다면?
다음 VBA 코드를 활용하면 자동으로 C열과 D열의 데이터 및 D열 메모 내용을 새로운 시트에 정리할 수 있습니다.


Sub CopyDataAndComments()
Dim wsSrc As Worksheet, wsDest As Worksheet
Dim rng As Range
Dim destRow As Integer

' 원본 시트와 새 시트 설정
Set wsSrc = ActiveSheet
Set wsDest = Sheets.Add
wsDest.Name = "새로운_시트"

' 새로운 시트 헤더 추가
wsDest.Cells(1, 1).Value = "C열 내용"
wsDest.Cells(1, 2).Value = "D열 내용"
wsDest.Cells(1, 3).Value = "D열 메모"

destRow = 2 ' 데이터 입력 시작 행

' C열과 D열을 반복하면서 복사
For Each rng In wsSrc.Range("C2:D" & wsSrc.Cells(Rows.Count, "C").End(xlUp).Row)
wsDest.Cells(destRow, 1).Value = rng.Offset(0, -1).Value ' C열 데이터
wsDest.Cells(destRow, 2).Value = rng.Value ' D열 데이터

' D열에 메모가 있는 경우 메모 내용을 복사
If Not rng.Comment Is Nothing Then
wsDest.Cells(destRow, 3).Value = rng.Comment.Text
Else
wsDest.Cells(destRow, 3).Value = "메모 없음"
End If

destRow = destRow + 1
Next rng

MsgBox "C열과 D열 데이터 및 D열 메모가 새로운 시트에 복사되었습니다!", vbInformation
End Sub


✅ 주요 기능:
C열과 D열 데이터 자동 복사


D열 메모를 텍스트로 저장 하여 새로운 시트에 정리


헤더 포함하여 깔끔하게 정리됨



3️⃣ 변수 값을 문자열로 변환하는 방법
VBA에서 숫자나 다른 데이터 타입을 문자열로 변환하려면  함수를 사용하면 됩니다.


Dim destRow As Integer
destRow = 2 ' 숫자로 설정

Dim stringDestRow As String
stringDestRow = CStr(destRow) ' 문자열로 변환

MsgBox "현재 행 번호: " & stringDestRow


✅ 주요 기능:
숫자를 문자열로 변환하여 활용 가능


메시지 박스로 변환된 값 출력



4️⃣ 여러 개의 문자열을 합쳐서 출력하는 방법
VBA에서 여러 개의 문자열을 결합하려면  연산자를 활용하면 쉽습니다.


Sub CombineStrings()
Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim combinedString As String

' 문자열 설정
str1 = "안녕하세요, "
str2 = "오늘은 좋은 날입니다. "
str3 = "즐거운 하루 보내세요!"

' 문자열 합치기
combinedString = str1 & str2 & str3

' 출력
MsgBox combinedString
End Sub


✅ 주요 기능:
& 연산자를 사용해 여러 개의 문자열을 쉽게 합칠 수 있음


메시지 박스로 문자열을 출력하여 확인 가능

마무리 📝
엑셀을 더욱 효율적으로 활용하기 위해 VBA 자동화를 적용하면 반복 작업을 줄이고 업무 시간을 단축할 수 있습니다. 특히 메모 위치 조정, 데이터 및 메모 복사, 문자열 변환, 문자열 결합 등의 기능을 활용하면 더욱 스마트하게 엑셀을 다룰 수 있어요! 🚀
👉 VBA 자동화를 활용하여 엑셀 작업을 더욱 쉽고 빠르게 해보세요!
혹시 추가로 궁금한 점 있으시면 댓글로 남겨 주세요. 😊





오늘의 이야기

주방용 이란 ?

 
고객이 주문한 상품 목록을 조회 하고 조리(?)가 완료 되어 배송을 하기 위한 목록을 조회 하고 관리 하는 화면 입니다. 
 


주방용 메뉴판



 
이 화면도 기본적으로 테블릿 화면에 맞게 구성 되었습니다. 


화면 상단의 메뉴 버튼 


  • 지문버튼 : 앱의 관리자 정보 설정 화면으로 접근할 수 있도록 지원 됩니다.  지문은 사용 하려는 기기의 설정에 등록된 지문 (또는 PIN 번호) 등으로 접근할 수 있습니다. 

  • 삭제 버튼 : 주문 목록 삭제을 위해 준비 하고 있으나, 아직은 기능이 지정 되지 않았습니다. 

  • 완료 목록: 주문이 완료된 목록이 조회될 수 있도록 지원 됩니다. 

  • 판매 현황 : 엑셀 파일로 판매 현황 정보를 내려 받도록 지원 됩니다. 메일로 보낼 수 도 있습니다. 

  • 상품 목록 : 판매을 위해 등록한 상품 목록을 조회 하고 수정할 수 있도록 지원 됩니다.

  • 상품 등록 : 상품 등록 화면 에서도 기기 관리자 인증후 상품을 추가(신규) 등록 할 수 있도록 지원 됩니다. 

  • 오픈소스 : 이 앱에서 사용 되는 open source 목록을 조회 합니다.

  • 안내페이지 : 이 페이지로 연결 되도록 지원 됩니다.


판매 현황이 공유 되면 

판매 현황을 공유 하면 엑세로 만들어진 판매 보고서가 메일등으로 전달 됩니다. 


엑셀 샘플



 


메일로 받은 엑셀 예제 입니다.  참고하시고 추가가 필요하시면 help@billcorea.com 으로 알려 주시면 수정해 드립니다. 


 


 


기기 설정 기본 화면 

기기설정




  • 이 앱을 사용 하기 위해서는 태블릿 기기만 있으면 됩니다. (단, android 11 API 30 이상 이어야 합니다.)

  • 이 앱을 사용 하기 위해서는 최초 설치시 사용자 등록을 요청 받게 됩니다. 그 때 입력한 이메일 주소/ 기본 비밀번호가 조회 됩니다. 

  • 다른 개인 정보는 수집 하지 않습니다. 여기 입력 되는 비밀번호는 데이터 저장을 위해서 로그인 하기 위한 정보일 뿐 따로 저장 되지않습니다.


중간에 있는 버튼 기능 


  • 알림 설정 : 기기의 지정 위치을 벗어나는 경우 관리자 기기로 위치 정보를 전달 하도록 하고 있습니다. 

  • 홈설정 : 관리자 기기의 위치을 지정하도록 지원 합니다. 

  • 위치 확인 : 관리 위치를 벗어난 기기의 목록을 지도에서 조회 하고 현재 위치를 확인할 수 있도록 지원 됩니다.


** 주방 데스크 인가요 ? : 관리자 기기로 설정 하기 위함 입니다.  매장 단위로 관리자 기기는 1대만 지정할 수 있습니다.  관리자 기기록 지정 하지 않는 경우에는 고객 사용자의 기기로 관리 되며, 테이블 번호을 입력 받아 관리 됩니다. 
 


하단 주문 목록 

 
주문 목록은 초기 화면에서 조회 되는 것 처럼 고객이 주문을 완료한 목록이 조회 되며, 배송 체크을 해 주시면 배송 완료가 되면서 목록에서 제거 됩니다.   제거된 목록은  판매 현황 등에서 확인할 수 있습니다. 
 
 


최초 설치에 대한 안내.

 
이 앱은 최초 설치후 실행시 다음 화면을 표시하고 사용자의 정보을 확인 합니다. 


기기의 PIN 설정



이 앱은 기기관리자의 허가로 관리 되는 화면을 운영하기 위해서 기기에 반드시 PIN 인증 방법 (또는 바이오 인증방법)이 설정 되어 있어야 합니다. 앱을 실행 할 때 최초 확인 하는 기능 입니다. 
 


사용자 정보 저장



이메일 / 비밀번호는 이 앱이 저장 하는 데이터의 권한을 분리 하기 위해서 사용 됩니다.  비밀번호는 이앱의 개발자도 확인할 수 없습니다.  잘 기억해 두셔야 합니다.  기억을 할 수 없는 경우 help@billcorea.com 으로 알려 주시면 변경 할 수 있도록 이메일로 안내 링크를 보내 드립니다. 
 
테이블 번호는 주방데스크의 경우는 필요하지 않으며,  이 앱의 데이터를 관리 하기 위한 정보로 사용 됩니다.  부여 하는 순서는 사용하는 매장 관리자의 요량에 따라 달라 집니다. 
 


화면 상단 오른쪽의 버튼 


  • 저장 버튼 : 입력한 정보를 저장 하고 등록 화면이 종료 됩니다. 

  • 나가기 버튼 : 입력을 취소 하고 앱이 종료 됩니다.


 


관리자화면에서 위치 정보 활용과 관련하여

 관리자 화면 중간에 있는 버튼 설명에서 홈위치, 기기 위치 목록을 사용하기 위해서는 기기의 위치 정보를 획득 할 수 있도록 권한 등록이 되어야 합니다.  기기 설정에서 아래 그림과 같이 권한 설정이 될 수 있도록 해 주세요.


이 앱의 위치 정보 확인 권한



이 앱은 항상 허용으로 설정해 주어야 위치 확인을 할 수 있습니다.  기기 분실시 정보 획득이 필요하시면 설정 하시고 그렇지 않은 경우 설정 하지 않아도 메뉴판 기능의 사용에는 영향을 주지 않습니다. 
또한 위치 정보는 기기 위치를 확인 하기 위해서 수집 하기는 하나,  타인과 공유 되거나 하지 않습니다. 
 
기기에서 상품의 이미지 촬영등의 기능이 필요한 경우 카메라 사용 권한 획득을 요청 하게 됩니다.  미리 카메라 사용 권한도 부여해 주시면 사용에 편리 합니다.
 
 
*** 현재 이 앱은 작성되고 있는 중이라 추가 기능이 구현 되면 예고(?) 없이 갱신 됩니다. 
 





오늘의 이야기

#billcorea #운동동아리관리앱 🏸 شنيدل، تطبيق ضروري لأندية كرة الريشة! 👉 مباراة اللعب - سجل النتائج وابحث عن المعارضين 🎉 مثالي لأي مكان، بمفردك...