집 >소프트웨어 튜토리얼 >사무용 소프트웨어 >Excel에서 행이 요구 사항을 충족하는지 확인합니다.
Sheet2에 명령 버튼을 삽입하고 다음과 같이 프로그래밍하세요.
비공개 하위 CommandButton1_Click()
i1은 길게, i2는 길게
딤 a$, b$
i2 = 2
Do While Range("C" & i2) ""
a$ = ""
b$ = ""
i1 = 1
Do While Worksheets("Sheet1").Range("C" & i1) ""
If Worksheets("sheet1").Range("C" & i1) = Range("C" & i2) Then
a$ = a$ & Worksheets("sheet1").Range("A" & i1) & ";"
b$ = b$ & Worksheets("sheet1").Range("B" & i1) & ";"
끝나면
i1 = i1 + 1
루프
If a$ "" Then a$ = 왼쪽(a$, Len(a$) - 1)
If b$ "" Then b$ = Left(b$, Len(b$) - 1)
범위("A"& i2) = a$
범위("B"& i2) = b$
i2 = i2 + 1
루프
끝 서브
이 명령줄은 병합(이러한 여러 텍스트 블록)이 포함된 커밋 블록을 삭제하는 데 도움이 됩니다
sed -n '/commit/{:a;h;n;/Merge/b;:c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}' 로그 > 로그.txt
작동 효과는 다음과 같습니다.
제 명령이 좀 복잡할 수도 있어요. 참고용으로 약간의 설명:
어디: a :b :c :d 명령은 점프 레이블 label
입니다.1. /커밋/{:a;h;n;
커밋 라인이 발견되면 이 라인을 보류 공간에 복사하고 다음 라인을 읽습니다.
2./병합/b;
방금 읽은 새 줄에 Merge가 포함되어 있으면 이 줄 처리를 종료하고 다음 줄을 읽고 계속해서 커밋을 찾습니다
방금 읽은 새 줄에 병합이 포함되어 있지 않으면 다음 줄에서 후속 명령을 계속 실행하세요.
3. :c;H;n;$bd;/커밋/!bc;:d;x;p;x;ba}
이 줄을 보류 공간에 추가하고 다음 줄을 읽습니다. 마지막 줄에 도달하지 않고 커밋을 찾을 수 없으면 bc 명령을 실행하고 c 레이블로 점프합니다. 파일 끝까지 읽을 때까지 이 프로세스를 반복합니다. 또는 커밋이 포함된 줄로 이동을 읽어보세요. 그런 다음, x는 홀드 공간의 내용을 패턴 공간의 내용과 교환하고, p는 패턴 공간의 내용(즉, 병합을 포함하지 않는 블록)을 출력하고, x는 이를 다시 교환하고, 패턴 공간은 이전 내용이 됩니다(파일의 끝이거나 커밋 라인을 포함함). 바, 라벨 a로 점프하여 이 줄을 계속 확인하고 1, 2, 3단계를 반복하세요.
위 명령이 다음과 같이 변경된 경우:
sed -n '/commit/{:a;h;n;/Merge/!b;:c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}' 로그 > log.txt
그러면 출력 결과는 Merge가 포함된 커밋 블록만 입니다
1자리 데이터와 4자리 데이터가 있기 때문에 txt에 특별한 캐리지 리턴이 없으면 행과 열의 개수를 알 수 없습니다. 캐리지 리턴이 있는 경우 간단히
를 사용하세요.#포함
char *strtok( char *str1, const char *str2 );
해결될 거예요.
먼저 getline()을 사용하여 줄당 문자열을 읽고 줄 수를 더한 다음
문자 *결과 = NULL;
문자열[100][100];
int x = 0;
결과 = strtok( str, " ");
동안( 결과 != NULL ) {
strcpy(string[x++] , 결과);
결과 = strtok( NULL, " " );
}
이런 방식으로 문자열 배열을 사용하여 모든 데이터를 저장할 수 있습니다. x는 총 개수를 기록하고, x를 행 개수로 나눈 값은 열 개수입니다.
저는 오늘 한가합니다. 전체 프로그램 작성을 도와드리겠습니다.
#포함
#포함
#포함
네임스페이스 표준 사용;
void main(){
char ch[100] = ""
문자 b[100][100];int x=0,y=0;
ifstream fin("123.txt",ios::in);
fin.getline(ch,100);
동안(!fin.eof()){
++x;
cout 문자 *결과 = NULL;
결과 = strtok(ch,",");
동안( 결과 != NULL ) {
strcpy(b[y++],결과);
cout 결과 = strtok( NULL, "," );
}
memset(ch,0,100);
fin.getline(ch,100);
}
fin.close();
}
//이전에 실행한 적이 있으므로 문제 없습니다. b[100][100]은 모든 요소이고 x는 행 수이며 y/x는 열 수입니다.
위 내용은 Excel에서 행이 요구 사항을 충족하는지 확인합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!